Удаление файлов старше 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 {} \;