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

Есть ли команда для удаления всех файлов в каталоге, которые не были изменены за N дней? Мне нужно очистить старые журналы.

Это приведет к удалению всех файлов старше 5 дней, вы также можете указать здесь -name '*log' чтобы быть более точным, и вы можете также указать maxdepth в команде find.

find /some/dir -type f -mtime +5 -delete

С zsh и (.m+n) квалификаторами glob :. выбирает только обычные файлы, m+n выбирает файлы, измененные больше, чем n дней назад;
например, список файлов в текущем каталоге, которые были изменены более 9 дней назад:

 print -rl -- *(.m+9) 

добавьте D чтобы включить файлы точек:

 print -rl -- *(D.m+9) 

или если вы хотите перезаписать (и, например, список файлов, заканчивающихся на .log ):

 setopt extendedglob print -rl -- **/*.log(.m+9) 

замените print -rl на rm если вы довольны результатом; хотя вам может потребоваться использовать zargs если у вас много файлов (чтобы избежать слишком длинного списка аргументов ):

 autoload zargs zargs ./**/*(.m+9) -- rm