로그 파일이 점점 커지면서 일부 백업 스크립트를 만들려고 합니다. 내가 가진 것은 현재 파일(예: 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
관심 있는 하위 디렉터리가 있으면 도움이 될 수 있습니다. 셸에서 트리를 탐색하는 것이 도움이 될 수 있습니다. 매우 두통이 있습니다.