Удаление файлов старше определенной даты в 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