
Я пытаюсь сделать какой-нибудь скрипт резервного копирования, так как файлы журнала становятся все больше и больше. У меня есть копирование текущего файла (например, secure
файла в /var/log/
) и удаление содержимого из этого файла. Но есть некоторые файлы с именем типа: secure.1
, secure.2
и все это я люблю подсчитывать их, и если число больше, то 2
архивировать их все. Я не могу найти метод, чтобы найти эти файлы или подсчитать их. Первая мысль, которая пришла мне в голову, была:
find /var/log/ -name *.1 | wc -l
и это всегда будет печататься, 1
так как есть один файл secure.1
. Как мне посчитать like в цикле for, где я могу указать диапазон чисел like {1..5}
или похожих. Есть ли способ разделить эти файлы и сделать их одним и сделать их резервной копией или удалить или что-то еще ... или, прежде всего, как мне найти все эти числа, которые заканчиваются числом.
решение1
С помощью простого -name
:
find /var/log -name '*.[2-9]'
или для любой цифры:
find /var/log -name '*.[[:digit:]]'
или если после цифры возможны другие символы:
find /var/log -name '*.[2-9]*'
решение2
Чтобы найти имена файлов, заканчивающиеся на число в диапазоне от .
[1 до 5].
find /var/log/ -type f -regextype sed -regex ".*\.[1-5]$"
решение3
Почему бы просто не...
for log in /var/log/*.[1-5]
do whatever to "$log"
done
find
Насколько я могу судить, вам это не нужно — оболочка использует те же глобалы, что и в -name
. И если все файлы находятся в одном каталоге... Конечно, если есть подкаталоги, которые вас также интересуют, то это find
может быть полезно — обход деревьев в оболочке может быть головной болью.