Знайдіть файли, які закінчуються цифрою


10

Я намагаюся зробити якийсь резервний скрипт, оскільки файли журналу стають все більшими та більшими. Що я маю - це скопіювати поточний файл (наприклад, secureфайл у /var/log/) та видалити вміст із цього файлу. Але є деякі файли з ім'ям , як: secure.1, secure.2і все це я хотів би порахувати їх, і якщо число більше , то 2архівувати їх все. Я не можу знайти спосіб знайти ці файли чи порахувати їх. Перша думка, яка мені підійшла:

find /var/log/ -name *.1 | wc -l

і це завжди буде друкуватись, 1оскільки є один файл secure.1. Як я можу рахувати, як в циклі, де я можу вказати діапазон чисел, подібних {1..5}або подібних. Чи є спосіб відокремити ці файли та зробити їх такими, як резервні копії чи видалення, або що-небудь колись ... або, перш за все, як я можу знайти всі ці числа, що закінчуються числом.


1
Ви забули процитувати підстановку? find /var/log/ -name '*.1' ...
муру

1
Я думаю, що ваш повинен перевірити logrotateсвою мету.
Костас

Відповіді:


15

З простим -name:

find /var/log -name '*.[2-9]'

або для будь-якої цифри:

find /var/log -name '*.[[:digit:]]'

або якщо можливі інші символи після цифри:

find /var/log -name '*.[2-9]*'

як знайти ті, які ТИЛЬКО містять цифру у своєму імені?
letthefireflieslive

3

Щоб знайти найменування файлів, які закінчуються числом, становить від .[1 до 5].

find /var/log/ -type f -regextype sed -regex ".*\.[1-5]$"

1

Чому б не просто ...

for log in /var/log/*.[1-5]
do whatever to "$log"
done

Вам не потрібно find, наскільки я можу сказати - оболонка використовує ті самі кулі, що і в них -name. І якщо всі файли знаходяться в одному каталозі ... Звичайно, якщо є підкаталоги, які вас також цікавлять, це findможе бути корисним - ходіння по деревах в оболонці може стати головним болем.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.