--}}
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем

Вопрос чайника по команде find (FreeBSD).. :)

Операционные системы
9
31
С друзьями на NN.RU
В социальных сетях
Поделиться
swall0w
07.02.2014
Есть задача удалять из определенного каталога файлы и каталоги которые не изменялись в течение нескольких дней (кому интересно то
2 и 7). Порывшись понял, что с этой задачей легко справляется
команда find...
в общем записал строчку: find /temp -atime +2d -delete
прописал выполнение в cron (crontab) это мне показалось проще,
т.к. с использованием periodic не совсем понял как всё это добавить.

Вроде все понятно и все работает, но - по команде выше удалились только файлы, а каталоги где были эти файлы остались. Что я сделал не так? Что-то нужно добавить?

PS.
Есть параметр -type к нему в описании сказано что можно указать что искать: файлы, директории и т.п. Если использовать type, то как указать что мне нужно удалить и файлы и каталоги... и почему тогда без этого параметра удалились только файлы...

PPS.
И еще попутный вопрос:
Мне нужно определять время (2 дня) с момента помещения файла в директорию (фалы в директории не изменяются, т.е. их оттуда можно только скопировать)... мне лучше использовать -mtime?
mik-mak
07.02.2014
А вот если так:

find /bla/dla/bla -mtime +2 -type f -exec rm {} \;
find /bla/dla/bla -mtime +2 -type d -exec rmdir {} \;
swall0w
07.02.2014
т.е. использовать две строки, грубо говоря две команды
а совместить можно? т.е. в -type указать два параметра f и d
mik-mak
07.02.2014
Хм.. "в -type указать два параметра f и d" и чего это даст?
Команды то разные: для файлов rm, для директории rmdir..
swall0w
07.02.2014
но ведь команда delete удаляет не только файлы...

PS.
хм.. команда find /bla -type d -delete удалила созданную папку...
swall0w
07.02.2014
так можно ли совместить два параметра в type, я никак не могу найти информации об этом.. :((
mik-mak
07.02.2014
Если совместить параметры f, d , то параметр type можно ваще не писать..

Хыы.. У мну нету команды delete :)
swall0w
07.02.2014
mik-mak писал(а)
Если совместить параметры f, d , то параметр type можно ваще не писать..

да вот не получается.... если не писать type то были удалены только файлы, а директории остались... (в этом-то и засада)
попробовал совместить f и d не получается.... :(
по отдельности списки выводит
find /bla -type f -print
find /bla -type d - print
а вот
find /bla \( -type f -a -type d \) -print
ничего не выдает (пробовал писать по разному) может где ошибка в записи...

PS. у меня BSD 9.1
mik-mak
07.02.2014
Тоесь, ты хочешь обе эти манипуляции в одну строчку запихать, так что ли :) ?
Ну, напиши так: find /bla/dla/bla -mtime +2 -exec rm -r {} \;
Оно, канешна, ругнётся :) Но удалит..

У меня нету BSD щас..
А зачем тама print?
swall0w
07.02.2014
по сути да.... в идеале мне нужна команда, которая удалит все лишнее из папки, что старше 2 дней (папки и файлы)...
это должно быть в автомате, т.е. без участия пользователя,
если ругнется и встанет с вопросом или не удалит, так не интересно... :)

>>зачем -print...
ну я же пока как обезьяна, что пишут в интернете и help`e, то и повторяю... :)
mik-mak
07.02.2014
У type могут быть тока два подходящих тебе параметра: f и d
Или ты пишешь какой-нито из них, или не пишешь ни одного..
А чем тебе не нравится rm и rmdir?
mik-mak
07.02.2014
А-а.. Тоесь ты не хочешь использовать exec :)
Щас проверил, при помоши delete удаляются и файлы, и директории..
swall0w
07.02.2014
да...
но у меня удалились только файлы, может быть дело в том, что я использовал параметр -atime?
mik-mak
07.02.2014
Когда он находит чета, осуществляется access.. atime уже не прокатывает, видимо.. Ставь -mtime..

Попробуй для тестирования погонять его по -name..
swall0w
07.02.2014
хм.... проверил еще раз, но с параметром -mtime... удалилось все и папки и файлы..
вероятно действительно дело в этом
mik-mak
07.02.2014
Угу.. Он, когда заходит в каталог, atime меняется.. Он смотрит на каталог , а у того atime сегодняшний :) -> не удаляет
swall0w
07.02.2014
Да, скорее всего так и есть....


Спасибо.
А с mtime по идее должно происходить то же самое. Когда в директории появляется или удаляется файл, меняется и дата изменения (а при изменении существующих файлов этого не происходит).

Кстати, а atime обычно по умолчанию выключено опциями монтирования ФС для скорости.
mik-mak
07.02.2014
Хм.. Согласен!

Наверна, дело, действительно, в том, что atime отключено, и как оно себя поведёт - тайна великая есть :)
swall0w
10.02.2014
где посмотреть включено или нет?

а так, с параметром -mtime пока все работает...
mik-mak
10.02.2014
swall0w
10.02.2014
хм...
у меня два раздела
в опциях одного ro, в опциях другого rw, это всё
никаких записей о noatime или atime нет.
mik-mak
10.02.2014
Хмм.. И свопа нету?
А чего есть?
swall0w
10.02.2014
соврал немножко... не ro a sw... :)

вот что есть:
/dev/ada0p2 / ufs rw 1 1
/dev/ada0p3 none swap sw 0 0

это всё...
mik-mak
10.02.2014
Значица, параметр noatime не установлен..
Щщитаю, если работает, с mtime-ом, то пущай и работает (нуу.. проверить ещё раз).. С причиной неработы с atime-ом можна и на факультативной основе разобраться :) Думаю, имеет смысл копать в ту сторону, о которой говорили ранее..
swall0w
10.02.2014
поставил mtime а дальше время покажет...
надо бы знать алгоритм поиска и выполнения
пока так же склоняюсь к тому что atime - по доступу, т.е. - обращению и в случае выполнения команды "удалить файл в папке" получаем обращение и происходит смена временного параметра...
mik-mak
10.02.2014
Дык.. BrainFucker выше справедливо заметил, что механизм с mtime аналогичный! Тоесь, при изменении каталога (переименование, удаление файлов) mtime меняется.. Вобщем, работает - пущай работает :)
swall0w
10.02.2014
тогда я не понимаю в чем разница:
есть три параметра atime, mtime и ctime для чего-то они есть,
значит и работают они по-разному %)
swall0w писал(а)
PS. у меня BSD 9.1
А какая разница?

man rm

В частности, если давать просто команду rm, то она удаляет файл, но перед этим СПРАШИВАЕТ, удалять или нет.
Если надо удалять без вопросов - rm с ключом -f
А если надо удалять все файлы В ПАПКЕ, то это называется удалять РЕКУРСИВНО и делается ключиком -R
Соответственно rm -Rf /путь/к/папке/в/которой/надо/удалить/файлы
Теперь подставьте эту команду в строку так, чтобы команде rm с правильными ключами передавались результаты команды find
find /bla/dla/bla -mtime +2 -exec rm -Rf {} \;

... пробуйте
Collins
15.02.2014
Я и не знал, что заглавная R для rm тоже подходит. Всегда -rf использовал.
swall0w
18.02.2014
Разницы в данном случае я думаю особой нет, но все таки отличия есть. (об этом пишут, но сам я не знаю, ибо до сего дня эти системы для меня были только на слуху)...

Да, я обязательно попробую, ибо учеба это всегда хорошо. :)
Но мне хотелось простой вариант, и оказалось он работает.

PS. Сейчас стоит другая задача, замена HDD с переносом информации со старого, т.к. добавление второго невозможно в силу физических причин.
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем
Последние темы форумов
Форум Тема (Автор) Последний ответ Ответов
Компьютерные и для оргтехники разъёмы

Компьютерные и для оргтехники разъёмы для различной коммутации. переходники . Назначение мне не известно. В наличии 13шт...
Цена: 1 500 руб.

Материнские платы на запчасти и не только

Материнские платы на запчасти и не только Материнские платы и другие комплектующие Отправка в регионы после оплаты. Транспортной...
Цена: 3 000 руб.

Сетевой фильтр APC Surge Arrest

Сетевой фильтр APC Surge Arrest для радиолюбителя.и не только Отправка в регионы после оплаты. ЦЕНА 3000 руб. В рабочем состоянии....
Цена: 3 000 руб.

Принтер лазерный HEWLETT PACKARD HP-6L

Принтер лазерный HEWLETT PACKARD HP-6L Отправка в регионы после оплаты. 3штуки БУ. Внешний вид из магазина простояли на складе...
Цена: 4 500 руб.