Как удалить файл журнала с именем файла

Как удалить файл журнала с именем файла

Предположим, у меня есть файлы журналов с таким форматом имени.

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: удалить их

Связанный контент