Как удалить файлы старше X часов

Я пишу bash script, который должен удалять старые файлы.

В настоящее время он реализуется с использованием:

find $LOCATION -name $REQUIRED_FILES -type f -mtime +1 -delete

Это приведет к удалению файлов старше 1 дня.

Однако, если мне нужно более точное разрешение, которое 1 день, скажем, как 6 часов? Есть ли хороший способ сделать это, например, использовать find и -mtime?

Ответ 1

Есть ли у find опция -mmin? Это может позволить вам проверить количество минут с момента последней модификации:

find $LOCATION -name $REQUIRED_FILES -type f -mmin +360 -delete

Или, возможно, посмотрите на tmpwatch, чтобы выполнить ту же работу. phjr также рекомендовал tmpreaper в комментариях.

Ответ 2

Вы можете сделать это: создать файл 1 час назад и использовать аргумент -newer file.

(Или используйте touch -t для создания такого файла).

Ответ 3

-mmin находится в минутах.

Попробуйте просмотреть страницу руководства.

man find

для других типов.

Ответ 4

Для SunOS 5.10

 Example 6 Selecting a File Using 24-hour Mode


 The descriptions of -atime, -ctime, and -mtime use the  ter-
 minology n ``24-hour periods''. For example, a file accessed
 at 23:59 is selected by:


   example% find . -atime -1 -print




 at 00:01 the next day (less than 24 hours  later,  not  more
 than one day ago). The midnight boundary between days has no
 effect on the 24-hour calculation.

Ответ 5

найти $PATH -name $log_prefix "*" $log_ext -mmin + $num_mins -exec rm -f {} \;

Ответ 6

Вот что можно сделать для того, чтобы по пути @iconoclast интересовался в comment другом ответе.

используйте crontab для пользователя или /etc/crontab для создания файла /tmp/hour:

# m h dom mon dow user  command
0 * * * * root /usr/bin/touch /tmp/hour > /dev/null 2>&1

а затем используйте это для запуска вашей команды:

find /tmp/ -daystart -maxdepth 1 -not -newer /tmp/hour -type f -name "for_one_hour_files*" -exec do_something {} \;

Ответ 7

Если у вас нет "-mmin" в вашей версии "find", тогда "-mtime -0.041667" приближается к "в течение последнего часа", поэтому в вашем случае используйте:

-mtime +(X * 0.041667)

поэтому, если X означает 6 часов, то:

find . -mtime +0.25 -ls

работает, потому что 24 часа * 0,25 = 6 часов