У меня есть папка с кучей файлов. Мне нужно удалить все файлы, созданные до 1 июля. Как это сделать в bash script?
Bash: удалить на основе штампа даты файла
Ответ 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