파일 이름에 하위 문자열 "s1r", "s2r", "s3r" 또는 "s19r"이 포함된 파일을 찾고 싶습니다.
곧 도착하겠습니다!
잘못된 시도:
ls *s[123][9?]r*
위의 내용은 하위 문자열이 포함된 파일만 제공합니다.
s19r
하지만
ls *s[1-3]|[19]r*
반품
-bash: [19]r*: 명령을 찾을 수 없습니다.
ls: *s[1-3]: 해당 파일이나 디렉터리가 없습니다.
즉, or | 연산자를 인식하지 못합니다. 이는 파이프에도 사용되기 때문에 의미가 있습니다.
"s1r", "s2r", "s3r" 또는 "s19r"이 포함된 파일을 얻으려면 어떻게 해야 합니까?
답변1
사용 ls *s1r* *s2r* *s3r* *s19r*
.
존재하지 않는 파일이 걱정된다면 nullglob 옵션을 설정할 수 있습니다.
nullglob
If set, bash allows patterns which match no files (see
Pathname Expansion above) to expand to a null string,
rather than themselves.
쉘이 bash가 아닌 경우 비슷한 방법이 있을 수 있습니다. 매뉴얼 페이지를 살펴보십시오.
답변2
다음을 시도해 볼 수도 있습니다.
ls *s?([123])r* *s19r*
예를 들어
다음 파일이 포함된 디렉터리가 있습니다.
% ls | column
s10r s12r s14r s16r s18r s1r s2r s4r s6r s8r
s11r s13r s15r s17r s19r s23r s3r s5r s7r s9r
위에서 언급한 ls를 사용하세요.
% ls *s?([123])r* *s19r*
s19r s1r s2r s3r
보다bash 패턴 매칭 매뉴얼자세한 내용은.