I have в directory on my machine, think of it эксперт my own sort of tmp
directory, but it's in my ~
directory. And I want to make it so that my system every 3 hours deletes all the поля in (though keeping any directory structure intact, but still deleting all the поля in all the levels of the directories recursively) that directory which пахал older than в day.
I am running Ubuntu GNOME 15.10 with GNOME 3.18, хан this be подарил? And if so, how? I would like this to be fully automated with не users interaction needed. This should be something automatically started when I login, so I shouldn't need to run something on every startup.
Используя find
:
find ~/tmp -type f -mtime +0 -delete
~/tmp
каталог должен искаться рекурсивно, изменить это соответственно
-type f
будет искать только файлы
-mtime +0
который будет соответствовать файлу, если он был в последний раз изменен один день или больше назад
-delete
просто удалит подобранный файл (файлы)
Здесь выгода -mtime +0
, большинство могло бы думать об использовании -mtime +1
но find
проигнорирует любое дробное время при вычислении дней. Так, -mtime +1
будет соответствовать файлу, если последнее изменение было сделано по крайней мере 2 дня назад.
Заключение в кавычки man find
, -mtime
имеет ту же конвенцию синхронизации как -atime
:
- atime n
К файлу в последний раз получили доступ несколько n*24 часы назад. То, когда находят, выясняет, сколько несколько 24-часовых периоды назад в последний раз получили доступ к файлу, любая дробная часть проигнорирована, таким образом, для соответствия-atime +1 к файлу, должно быть, получили доступ по крайней мере два дня назад.
Также обратите внимание, что, если Вы хотите точность, необходимо посмотреть на -mmin
опция find
указать время в минутах.
Для выполнения его периодически после 3 часов можно добавить a cron
запись.
Выполненный crontab -e
и добавьте:
00 */3 * * * /usr/bin/find ~/tmp -type f -mtime +0 -delete
Используя zsh
удалить файлы:
rm ~/tmp/**/*(.-m+0)
Добавление к cron
:
00 */3 * * * /usr/bin/zsh -c 'rm ~/tmp/**/*(.-m+0)'
Необходимо быть в состоянии удалить все файлы, более старые, чем 1 день в /home/username/directory
и все каталоги ниже его с:
find /home/username/directory -type f -mtime +1 -delete
И планировать ту команду каждые три часа устанавливает его как задание крона:
crontab -e
Тогда в crontab:
0 */3 * * * find /home/username/directory -type f -mtime +1 -delete
, Который выполняет Вашу команду каждые три часа на часе (т.е. минута 0), таким образом, 3:00, 6:00 и т.д.
Проходит cron
и crontab
manpages
для получения дополнительной информации о них.