
Предположим, у меня есть файлы журналов с таким форматом имени.
NameLog.log.2014-09-27
NameLog.log.2014-09-28
NameLog.log.2014-09-29
NameLog.log.2014-09-30
NameLog.log.2014-10-01
NameLog.log.2014-10-02
NameLog.log.2014-10-03
NameLog.log.2014-10-04
Я хочу удалить только файл журнала
NameLog.log.2014-09-27
NameLog.log.2014-09-28
NameLog.log.2014-09-29
NameLog.log.2014-09-30
На самом деле я хочу, чтобы в журнале файлов хранилось всего 30 файлов. Как решить эту проблему с помощью bash
скрипта?
решение1
Самый простой способ добиться желаемого — удалить все файлы в каталоге, которые старше 30 дней. Вы можете использовать эту find
команду:
find /path/to/log/ -maxdepth 1 -name "NameLog.log*" -mtime +30 -delete
Объяснение:(видеть:объясниоракушка)
-maxdepth 1
: не углубляйтесь в структуру папок-name "NameLog.log*"
: применяется только к файлу журнала с таким именем-mtime +30
: имеющие время изменения более 30 дней-delete
: удалить их