LINUX.ORG.RU

bash как удалить файлы и директории, старше x-дней?

 , ,


0

3

Есть некая директория Test. В ней находятся файлы и папки. Как удалить только то, что старше 10 дней к примеру.

Попытка применить

find  /volume1/Test -cmin +$storetime -delete

приводит к удалению и самой директории Test, если в ней нет свежих файлов, естественно.



Последнее исправление: Illujanka (всего исправлений: 1)

Ответ на: комментарий от PunkoIvan

TС: добавь ключик type -f к файнду и в результате будут только файлі.

Там не только файлы под удаление, но и папки, в том то и проблема.

Illujanka
() автор топика
Последнее исправление: Illujanka (всего исправлений: 1)
Ответ на: комментарий от BaBL

Чем -exec rm {} \;

Разница в скорости будет незаметна, но зато есть везде, ибо posix. Но для не \;, а +

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от teod0r

про ключ -mindepth тебе уже писали

Всегда удивляет в тутошних комментаторов желание решить как можно узкую задачу с возможностью появления завтра у ТСа еще вопроса, например, что делать, если в каталоге появится другие подкаталоги и rm на них ругается. Одно дело, когда универсальное требует кучу нового кода, другое дело, что правильный ответ скорее всего не -mindepth, а таки тоже уже данный "-type f"

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от Illujanka

При Test, без свежих файлов, удаляет и саму Test

~ $ find /tmp/Test
/tmp/Test
/tmp/Test/aaa

~ $ find /tmp/Test/*
/tmp/Test/aaa

Вариант с * не затронет сам каталог

imul ★★★★★
()

Утилита tmpwatch. Одна короткая строчка. И никаких предлагаемых тут нагромождений.

Bootmen ☆☆☆
()

приводит к удалению и самой директории Test, если в ней нет свежих файлов, естественно.

делай touch /path/to/search/dir/.placeholder перед запуском find и всё. Никаких find dir/*, это пропустит все файлы и директории начинающиеся с точки «.»

futurama ★★★★★
()
$ (cd /volume1/Test; find . -delete)
anonymous
()
Ответ на: комментарий от vodz

с возможностью появления завтра у ТСа еще вопроса, например, что делать, если

В данном условии было сказано удалить только то, что старше 10 дней, без уточнения файлы или директории, но с сохранением директории верхнего уровня. К данному условию идеально подходит -mindepth.

Задачи нужно решать по условию и по мере поступления, а не прикидываться Вангой.

surefire ★★★
()
Ответ на: комментарий от surefire

Задачи нужно решать по условию и по мере поступления, а не прикидываться Вангой.

Вот только у вас не Ванга, а натуральный наполеонизм какой-то. Я комментировал не вас, а teod0r-а, который комментировал скрипт bash как удалить файлы и директории, старше x-дней? (комментарий)

vodz ★★★★★
()
Ответ на: комментарий от vodz

Скорее всего я просто не совсем верно интерпретировал ваш пост.

surefire ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.