Удалить все файлы, созданные до определенной даты

У меня есть каталог, содержащий большое количество файлов (например, журналы для каждого дня в году). Я хотел бы удалить все файлы, созданные до 22/11. Как я могу это достичь? Должен ли я использовать find then exec -rm ? Я использую ksh.

3 Solutions collect form web for “Удалить все файлы, созданные до определенной даты”

Использование find по-прежнему является предпочтительным способом удаления файлов. См. http://mywiki.wooledge.org/UsingFind для получения дополнительной информации.

Один из способов сделать это – создать файл с отметкой времени в нем. например

 touch -t 201311220000 /tmp/timestamp 

Теперь удалите файлы GNU find (предполагается в текущем каталоге), которые соответствуют отметке времени, например:

 find . -type f ! -newer /tmp/timestamp -delete 

или не найти GNU

 find . -type f ! -newer /tmp/timestamp -exec rm {} \; 

С GNU или некоторым BSD find s:

 find . ! -newermt 2013-11-22 ! -type d -delete 

Обратите внимание, что он проверяет время последней модификации файлов. На некоторых BSD вы можете использовать -newerBt вместо -newermt чтобы проверить время рождения inode файла, если оно доступно.

 find /path/to/directory/ -mtime +<number of days> -name '<file name>' -exec rm -rf {} \; 

пример:

 find /Netap_fileshare_backup/SQL/DB_backups/xeo/ -mtime +15 -name 'ORA_XEO*' -exec rm -rf {} \; 

В этом случае он удалит все файлы, начинающиеся с «ORA_XEO» с более чем 15 дней.

Interesting Posts
Linux и Unix - лучшая ОС в мире.