숫자로 끝나는 파일 찾기

숫자로 끝나는 파일 찾기

로그 파일이 점점 커지면서 일부 백업 스크립트를 만들려고 합니다. 내가 가진 것은 현재 파일(예: secure에 있는 파일 /var/log/)을 처리하고 해당 파일에서 내용을 제거하는 것입니다. 하지만 다음과 같은 이름을 가진 일부 파일이 있습니다. secure.1모두 secure.2세어보고 숫자가 더 크면 2모두 보관하고 싶습니다. 이 파일을 찾거나 계산하는 방법을 찾을 수 없습니다. 내 마음에 가장 먼저 떠오르는 것은 다음과 같습니다.

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

1그리고 파일이 하나뿐이므로 항상 인쇄됩니다 secure.1. 유사 {1..5}하거나 유사한 범위의 숫자를 지정할 수 있는 for 루프에서처럼 계산하려면 어떻게 해야 합니까? 이 파일들을 분리해서 백업이나 삭제 등을 위해 하나의 파일로 만드는 방법이 있나요? 아니면 애초에 숫자로 끝나는 모든 숫자를 어떻게 찾나요?

답변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관심 있는 하위 디렉터리가 있으면 도움이 될 수 있습니다. 셸에서 트리를 탐색하는 것이 도움이 될 수 있습니다. 매우 두통이 있습니다.

관련 정보