
로그 파일이 점점 커지면서 백업 스크립트를 만들려고 합니다. 내가 가진 것은 현재 파일(예: 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
도움이 될 수 있습니다. 쉘에서 나무를 걷는 것은 골치 아픈 일이 될 수 있습니다.