Найти файлы, которые заканчиваются номером


10

Я пытаюсь сделать некоторый резервный скрипт, поскольку файлы журнала становятся все больше и больше. У меня есть копирование текущего файла (например, secureфайла в /var/log/) и удаление содержимого из этого файла. Но есть некоторые файлы с именем , как: secure.1, secure.2и все это я хотел бы сосчитать их, и если число больше , то 2архивировать их все. Я не могу найти способ найти эти файлы или посчитать их. Первое, что пришло мне в голову, было:

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

и это всегда будет печатать, 1поскольку есть один файл secure.1. Как я могу рассчитывать, как в цикле for, где я могу указать диапазон чисел, похожих {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.