@OP,
glob pettern은 파일 이름에만 사용되지 않습니까?
아니요, "glob"패턴은 파일 이름에만 사용되는 것이 아닙니다. 문자열을 비교하는데도 사용할 수 있습니다. 예제에서 case / esac을 사용하여 문자열 패턴을 찾을 수 있습니다.
gg=svm-grid-ch
case "$gg" in
*grid* ) echo "found";;
esac
case "$gg" in ????grid*) echo "found";; esac
case "$gg" in s???grid*) echo "found";; esac
bash에서 언제 glob 패턴을 사용하고 언제 정규 표현식을 사용할까요? 감사!
정규식은 "글롭 패턴"보다 다재다능하고 "편리합니다". 그러나 "글 로빙 / 확장 된 글 로빙"이 쉽게 제공 할 수없는 복잡한 작업을 수행하지 않는 한 정규식을 사용할 필요가 없습니다. 정규식은 bash <3.2 버전에 대해 지원되지 않지만 (dennis 언급했듯이) 확장 된 globbing을 계속 사용할 수 있습니다 (설정에 의해 extglob
). 확장 된 글 로빙에 대해서는 여기 와 몇 가지 간단한 예제를 참조하십시오 .
OP 업데이트 : 정규식을 사용하여 2 문자 (점 "."은 1 문자를 의미)와 "g"로 시작하는 파일을 찾는 예
예 : 출력
$ shopt -s dotglob
$ ls -1 *
abg
degree
..g
$ for file in *; do [[ $file =~ "..g" ]] && echo $file ; done
abg
degree
..g
위의 파일 이름에는 "g"가 뒤 따르는 2 개의 문자가 포함되어 있기 때문에 파일이 일치합니다. (예 ..g
).
globbing과 동등한 것은 다음과 같습니다. ( 및의 의미 에 대한 참조 를 참조하십시오 )?
*
$ for file in ??g*; do echo $file; done
abg
degree
..g