이름이 특정 패턴과 일치하는 모든 파일 삭제

이름이 특정 패턴과 일치하는 모든 파일 삭제

내 홈 디렉토리에 있는 파일은 다음과 같습니다.

23233.txt
3233.txt
ba233.txt
kh23.txt
khalith
main.sh
s2233.txt
tr233.txt
WWW.txt

.txt예를 들어 이름이 두 개의 소문자로 시작하고 그 뒤에 두 개의 숫자와 확장자가 오는 모든 파일을 삭제하려면 어떻게 해야 합니까 kh23.txt?

답변1

당신이 찾고 있는 패턴은 다음과 같습니다.

[a-z][a-z][0-9][0-9].txt

이는 두 개의 소문자, 두 개의 숫자, 리터럴 문자열만 포함하는 현재 디렉터리의 모든 이름과 일치합니다 .txt.

정규식과 달리 파일 이름 와일드카드 패턴은 문자열의 시작과 끝 부분에 자동으로 고정되므로 두 개의 소문자 중 첫 번째 문자 또는 .txt.

이 패턴을 직접 사용할 수 있습니다 rm.

$ rm "$HOME"/[a-z][a-z][0-9][0-9].txt

또는 모든 하위 디렉토리로 재귀하려면 다음을 사용하십시오 find.

$ find "$HOME" -name "[a-z][a-z][0-9][0-9].txt" -delete

구현에서 find이를 지원하지 않는 경우 -delete다음을 고려하세요.

$ find "$HOME" -name "[a-z][a-z][0-9][0-9].txt" -exec rm {} +

추신: 이 단어를 사용하세요숫자0에서 9 사이의 숫자를 언급할 때. ㅏ숫자특히 233(여러 예제 파일 이름의 일부)이 숫자이기 때문에 다소 모호합니다. (이 모호성을 제거하기 위해 질문을 편집했습니다)

답변2

이건 어때?

find /path/to/parent/dir/ -regextype posix-extended -regex '.*/[a-z]{2}[0-9]{2}\.txt' -exec rm {} \; 

관련 정보