Удаление файлов старше определенной даты в linux
Я использовал команду ниже для удаления файлов старше года.
find /path/* -mtime +365 -exec rm -rf {} \;
Но теперь я хочу удалить все файлы, чье измененное время старше 01 января 2014 года
Как это сделать в linux.
Ответы
Ответ 1
Вы можете коснуться вашей метки времени как файла и использовать ее как контрольную точку:
например. на 01 января 2014 года:
touch -t 201401010000 /tmp/2014-Jan-01-0000
find /path -type f ! -newer /tmp/2014-Jan-01-0000 | xargs rm -rf
это работает, потому что find
имеет переключатель -newer
, который мы используем.
От man find
:
-newer file
File was modified more recently than file. If file is a symbolic
link and the -H option or the -L option is in effect, the modification time of the
file it points to is always used.
Ответ 2
Это работает для меня:
find /path ! -newermt "YYYY-MM-DD HH:MM:SS" | xargs rm -rf
Ответ 3
find ~ -type f ! -atime 4|xargs ls -lrt
В этом списке будут перечислены файлы, к которым был получен доступ более 4 дней, и поиск в домашнем каталоге.
Ответ 4
Принятый ответ загрязняет файловую систему и сам находит предложения удалить. поэтому нам не нужно передавать результаты в xargs, а затем выдавать rm. Этот ответ более эффективен
find /path -type f -not -newermt "YYYY:MM:DD HH:MI:SS" -delete