prac_
데스크탑의 디렉토리 및 하위 디렉토리에서 파일 이름이 로 시작하고 그 뒤에 두 자리 숫자가 오며 .c
또는로 끝나는 모든 파일을 찾으려고 합니다..o
find ./Desktop -type f -name "prac_[0-9][0-9]*" \( -name "*.c" -o -name "*.o" \)
내가 겪고 있는 문제는 위의 명령이 파일 prac_99BLAHBLAH.o
형식을 prac_99.c
.
답변1
파일 이름에 사용되는 와일드카드 패턴은 모든 문자열과 일치할 수 있으므로 패턴 중 하나와 일치하는 이름은 or 입니다 *
.prac_99BLAHBLAH.o
prac_[0-9][0-9]*
*.c
*.o
대신에
find ./Desktop -type f -name 'prac_[0-9][0-9].[co]'
파일 이름 와일드카드 패턴은 [co]
단일 문자 c
또는 와 일치 o
하므로 와 함께 사용되는 패턴 끝에 배치하면 -name
이름 끝에 두 문자 중 하나가 있는 파일 이름을 찾을 수 있습니다.
답변2
숫자와 파일 확장자 사이의 문자를 제한하지 마십시오. 모두 정규식일 수 있습니다.
find ./Desktop -type f -regex ".*/prac_[0-9][0-9][.][co]"
- 시작은 파일 이름뿐만 아니라 파일 경로와도 일치하기
.*/
때문입니다 .-regex
- 이는
[.]
마침표와 일치하는 단일 문자 집합입니다. 일반 문자는 어떤 문자와도 일치할 수 있기 때문에 사용됩니다.
. 이스케이프 처리\.
도 작동하지만 프로그래밍 언어에 따라 구문이 다르기 때문에 이 스타일을 피하는 경향이 있습니다(예: 와 같은 추가 이스케이프 문자를 사용하거나\\.
와 같은 원시 문자열에 사용r"\."
).