Вопрос Как удалить файлы, измененные между конкретными датами?


Как и в теме: я хотел бы удалить файлы в каталог, который был изменен в определенном диапазоне дат. Как я могу это сделать ?


9
2017-08-14 09:20


происхождения




ответы:


Команда GNU find это путь. Например, чтобы удалить все файлы в текущем каталоге от 1 до 5 августа, вы можете использовать следующую команду

find . -maxdepth 1 -type f -newermt 2011-08-01 ! -newermt 2011-08-06 -delete

Лучше выполнить команду без -delete во-первых, увидеть список заинтересованных файлов (хорошим заменителем может быть -ls которые производят листинг).

Удаление -maxdepth 1 спецификация также будет перемещать все подкаталоги.

Вы также можете указать часы, например

find . -maxdepth 1 -type f -newermt '2011-08-01 10:01:59' \
                         ! -newermt '2011-08-06 23:01:00' -delete

Будьте осторожны, чтобы не удалять одинарные кавычки, которые защищают пробелы между датой и временем.

Персонаж ! является отрицанием, его следует читать: новее, что эта дата, но не новее, что эта другая дата.


15
2017-08-14 09:38



Спасибо за ответ. Могу ли я также использовать что-то, чтобы выбрать диапазон часов? И что такое '!' используется для ? - Patryk
! это не. В этом примере: не новее, чем 2011-08-06. - con-f-use
@lordmonkey: см. мое редактирование в ответе - enzotib
+1. Я не знал, что-то делать. Может быть, это не нужно, но я добавлю -type f, - Michał Šrajer
@ Michał Šrajer: хорошие советы для -type f, Я забыл об этом. -delete Я думаю, что это расширения GNU. - enzotib