Удаление файлов старше X минут

Я хотел бы удалить файлы старше 59 минут. У меня это до сих пор:

find /tmp -daystart -maxdepth 1 -mmin +59 -type f -name "*.*" -exec rm -f {} \;

Это не работает и, кажется, удаляет все файлы. Я тестировал это несколько раз, и я думаю, что проблема связана с daystart.

Я прочитал справочную страницу, и, похоже, это основное время в начале дня, а не 24 часа назад. Если это так, то как я могу точно удалить файлы, которые старше 59 минут? Нужно ли мне учитывать daystart и добавить еще несколько минут?

Пример:

[email protected]:/tmp$ ls -la
total 8
drwxrwxrwt  2 root   root   4096 Jul 20 14:39 ./
drwxr-xr-x 23 root   root   4096 Jun 25 18:34 ../
-rw-rw-r--  1 ubuntu ubuntu    0 Jul 20 12:35 a.txt

Обе следующие команды возвращают файл:

[email protected]:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +59 -type f -name "*.*"
/tmp/a.txt

А также:

[email protected]:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +359 -type f -name "*.*"
/tmp/a.txt

Однако файл не старше 659 минут (10,9 часа)! Но в 759 (12.65 часов) он больше не возвращает файл?

Ответ 1

Когда используется -mmin, -daystart появляется, чтобы подсчитать его с конца сегодняшнего дня, а не в начале.

Если вы хотите найти файлы, измененные более 59 минут назад, вам не нужен этот параметр. -mmin рассчитывает с текущего времени по умолчанию.

[email protected]:~/testdir$ date
Sat Jul 20 10:02:20 CDT 2013
[email protected]:~/testdir$ ls -l
total 0
-rw-r--r-- 1 barmar adm 0 Jul 20 09:57 a.txt
[email protected]:~/testdir$ find . -maxdepth 1 -mmin +2 -type f
./a.txt
[email protected]:~/testdir$ find . -maxdepth 1 -mmin +10 -type f

Ответ 2

это должно сработать для вас

find/path -mmin +59 -type f -exec rm -fv {} \;