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

12

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

Patryk
источник

Ответы:

18

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

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

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

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

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

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

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

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

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