2016-12-05 3 views
0

У нас есть несколько файлов на нашем экземпляре сервера под /wslogs/instance_name, и это все файлы журналов, созданные ежедневно.Как удалить определенные файлы в unix

Я ищу сценарий для автоматического удаления этих файлов на основе даты. Итак, скажем, удалите файлы старше 10 дней. Проблема заключается в том, что имя файла не чисто формат даты, а это

hostname_%m%d%Y_access.log and hostname_%m%d%Y_error.log 

Например, ra70960708_12042016_access.logra70960708_12042016_error.log и (где ra70960708 имя сервера или имя хоста).

Я пытаюсь использовать команду rm, но не могу определить, как указать здесь файлы, если я скажу, что мне нужно удалить те, которые на 10 дней старше текущей.

Любая помощь будет принята с благодарностью.

Cheers,

Эшли

+0

Забудьте о названии, дате изменения использования вместо этого. – andlrc

+0

Если журналы создаются с помощью 'logrotate', просто используйте' maxage 10' –

+0

@andlrc. Не могли бы вы уточнить, что такое дата модификации здесь? – Ashley

ответ

3

Забыли о названии, и время использования модификации вместо:

Ниже будет список файлов в текущем каталоге, что соответствует Glob: hostname_*_error.log и которые Последнее изменение + 10 дней назад:

find . -maxdepth 1 -mindepth 1 \ 
    -type f -name 'hostname_*_error.log' \ 
    -mtime +10 

затем они могут быть удалены с -delete.

. это каталог для поиска.

+0

@ user2182349: но было бы лучше использовать '-exec rm { } + 'или, если ваш вариант make поддерживает его,' -delete'. –

+0

@JonathanLeffler: - Не могли бы вы помочь мне понять, как мы можем использовать -exec rm {} здесь для решения, предложенного andlrc. Означает ли это: - найти. -maxdepth 1-mindepth 1 \ -type f -name 'hostname _ * _ error.log' \ -mtime +10 -exec rm {} Было бы здорово, если бы я мог использовать полные команды команд unix, используемые для этой цели – Ashley

+0

@andlrc: - Спасибо за быстрое решение. Я попробую это. Однако просто хотел подтвердить, как мы можем выполнить весь набор команд здесь. Сначала он найдет. -maxdepth 1-mindepth 1 \ -type f -name 'hostname _ * _ error.log' \ -mtime +10, а затем в новой строке -delete, и если да, то что мы выбираем для удаления. Любые разъяснения здесь действительно помогут, так как я новичок в unix. – Ashley

Смежные вопросы