Я хочу удалить из каталога файлы журнала старше 5 дней. Но удаление не должно основываться на отметке времени файла. Он должен быть основан на имени файла. Например сегодняшней дата 07/05/2012 и каталог содержит 10 файлов имен , такие как ABC_20120430.log
, ABC_20120429.log
, ABC_20120502.log
, и ABC_20120320.log
т.д. Я хочу , чтобы иметь возможность удалить файлы путем извлечения даты из имени файла.
10
Я думаю, что у @oHessling это почти есть: не разбирайте ls , и вы можете сделать больше в bash:
источник
four_days=$(echo "puts [clock format [clock scan {4 days ago}] -format %Y%m%d]" | tclsh)
Один из способов использования
perl
:Содержание
script.pl
:Чтобы проверить это, я создаю несколько файлов:
Проверьте их с помощью
ls -1
:Запустите скрипт как:
Со следующим выводом:
источник
Вместо этого вы можете использовать тот факт, что ваши имена файлов будут отсортированы в хронологическом порядке. Например, чтобы сохранить последние 5 файлов:
источник
rm
если вы не знаете, что каждый раз убиваете котят. Это просто плохая идея, если вы не знаете, зачем проводить какие-то исследования и узнаете, что всегда есть лучшие способы решения любой проблемы, для которой это может быть решением.