Команда оболочки для удаления папок менее чем за N дней

Это немного другой вопрос/вариант этот вопрос

  1. Удалите все каталоги, созданные вовремя старше N дней.
  2. Не рассматривайте подкаталоги/файлы внутри каталога.

Ex:

drwxrwxr-x 6 test test 4096 Aug 26 14:42 2.1.6-SNAPSHOT_201408261440_1
drwxrwxr-x 6 test test 4096 Sep  1 05:13 2.1.6-SNAPSHOT_201408281233_1
drwxrwxr-x 6 test test 4096 Sep  1 10:06 2.1.6-SNAPSHOT_201409011001_1
drwxrwxr-x 6 test test 4096 Sep  1 15:58 2.1.6-SNAPSHOT_201409011554_1
drwxrwxr-x 6 test test 4096 Sep  2 15:11 2.2.0-SNAPSHOT_201409021508_1
drwxrwxr-x 6 test test 4096 Sep  2 15:18 2.2.0-SNAPSHOT_201409021515_1
drwxrwxr-x 6 test test 4096 Sep  5 13:05 2.2.0-SNAPSHOT_201409051303_1
drwxrwxr-x 6 test test 4096 Sep  5 15:32 2.1.6-SNAPSHOT_201409051528_1
drwxrwxr-x 6 test test 4096 Sep  8 11:54 2.1.6-SNAPSHOT_201409081152_1

Я должен иметь возможность удалить все папки по этому пути, созданные старше N дней. Во внутренней папке могут быть обновленные файлы/подкаталоги, которые являются новыми, это не имеет значения.


person Reddy    schedule 17.09.2014    source источник


Ответы (1)


Предположим, вы хотите удалить старые каталоги:

N=4
find . -type d -mtime +$N -exec rm -fr {} +

Поиск в глубину гарантирует, что подкаталоги будут удалены раньше каталогов, которые их содержат, но может привести к изменению времени изменения каталога до того, как find просмотрит его, что будет означать, что старые каталоги больше не будут считаться старыми. старый. Однако, наоборот, rm может в конечном итоге попытаться удалить каталоги, которые он уже удалил, но опция -f гарантирует, что это не приведет к сообщениям об ошибках.

Вы можете обратиться к Explaining find … -mtime command для получения информации о значении +$N vs. -$N против $N (где предполагается, что N содержит число).

person Jonathan Leffler    schedule 17.09.2014