답변:
bash에서 실행 shopt -s extglob
하거나 ()에 넣으면 예외적 인 구문 (ksh에서 상 속됨)으로 정규 표현식을 제공 ~/.bashrc
하는 추가 패턴 을 사용할 수 있습니다 . 이러한 패턴을 ksh에서도 사용할 수 있으며 zsh 이후에서도 사용할 수 있습니다 setopt ksh_glob
.
$ shopt -s extglob
$ ls /opt/somedir/@(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
zsh에서는 (foo|bar)
패턴으로 직접 사용할 수 있습니다 .
% ls /opt/somedir/(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
명령은 전체 경로와 함께 호출됩니다. 짧은 경로로 명령을 호출하려면 디렉토리를 어떻게 든 변경해야하며 (cd /opt/somedir && somecommand aa bb cc)
, 가장 쉬운 방법입니다.
첫째, 나는 당신을 직접 결코 구문 분석 LS , 이제까지 . 원하는 것을 수행하는 적절하고 정식적인 방법은 find 입니다.
예를 들면 다음과 같습니다.
find /opt/somedir -regex '.*[aa|bb|cc].*' -exec mv '{}' ~/backup \;
나는 보통 더 간단하기 때문에 -name
대신에 사용 합니다 -regex
. 그러나 정규식은 사용 사례에 적합합니다. 실제로 이동 / 삭제하려는 파일인지 확인하기 위해 처음으로 명령 을 실행해야합니다 -exec
.