How to make my system delete all the поля in в certain directory older than в certain украл while keeping the directory structure intact?

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.

12
задан 15 December 2015 в 05:58

2 ответа

Используя 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)'
21
ответ дан 23 November 2019 в 03:31

Необходимо быть в состоянии удалить все файлы, более старые, чем 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 для получения дополнительной информации о них.

6
ответ дан 23 November 2019 в 03:31

Другие вопросы по тегам:

Похожие вопросы: