숫자로 끝나는 파일 찾기


10

로그 파일이 점점 커짐에 따라 백업 스크립트를 만들려고합니다. 내가 가진 것은 현재 파일 (예 : secure파일 /var/log/) 을 복사하고 해당 파일에서 내용을 제거하는 것입니다. 그러나이 같은 이름을 가진 일부 파일은 다음과 같습니다 secure.1, secure.2그리고 내가 좋아하는 모든이를 계산하고, 숫자가 큰 경우 다음 2그들 모두를 보관. 이 파일을 찾거나 계산하는 방법을 찾을 수 없습니다. 나에게 떠오른 첫 번째 생각은 :

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

그리고 1하나의 파일이 있으므로 항상 인쇄 됩니다 secure.1. 내가 좋아 {1..5}하거나 비슷한 숫자 범위를 지정할 수있는 for 루프에서 어떻게 셀 수 있습니까 ? 이 파일을 분리하여 하나의 파일로 만들고 백업 또는 삭제하거나 무엇을 ... 또는 먼저 숫자로 끝나는이 숫자를 어떻게 찾을 수 있습니까?


1
와일드 카드 인용을 잊었습니까? find /var/log/ -name '*.1' ...
muru

1
logrotate당신의 목적을 확인해야한다고 생각합니다 .
Costas

답변:


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가 있다면 도움이 될 수 있습니다-쉘에서 나무를 걷는 것은 두통이 될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.