내 홈 디렉토리에 있는 파일은 다음과 같습니다.
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 {} \;