Bash: удалить на основе штампа даты файла

У меня есть папка с кучей файлов. Мне нужно удалить все файлы, созданные до 1 июля. Как это сделать в bash script?

Ответ 1

Я думаю, что следующее должно делать то, что вы хотите:

touch -t 201007010000 dummyfile
find /path/to/files -type f ! -newer dummyfile -delete

Первая строка создает файл, который был последним изменен 1 июля 2010 года. Вторая строка находит все файлы в /path/to/file, у которых дата не новее, чем файл dummy, а затем удаляет их.

Если вы хотите дважды проверить, что он работает правильно, отбросьте аргумент -delete, и он должен просто перечислить файлы, которые будут удалены.

Ответ 2

Это должно работать:

find /file/path ! -newermt "Jul 01"

Чтобы найти файлы, которые вы хотите удалить, команда для их удаления:

find /file/path ! -newermt "Jul 01" -type f -print0 | xargs -0 rm