Bash: удалить на основе даты файла - PullRequest
11 голосов
/ 09 сентября 2010

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

Ответы [ 2 ]

22 голосов
/ 09 сентября 2010

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

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

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

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

8 голосов
/ 09 сентября 2010

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

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

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

find /file/path ! -newermt "Jul 01" -type f -print0 | xargs -0 rm
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...