Bash는 와일드카드를 통해 확장자가 없는 파일 이름을 선택합니다.

Bash는 와일드카드를 통해 확장자가 없는 파일 이름을 선택합니다.

bash 실패할 때 와일드카드를 통해 확장자가 없는 파일 이름을 선택하는 방법은 무엇입니까? 예를 들어

$ ls /source/c
m m.asm m.c m.d m-0 m-1 

$ cp -ru /source/c/*. ~/Downloads/c
cp: cannot stat '/source/c/*.': No such file or directory

m m-0 m-1만 복사

도와주세요! 매우 행복합니다. 감사합니다.

답변1

점으로 구분된 파일 이름을 사용하지 않으려면 !(*.*)대신 확장된 glob 표현식을 사용하세요 *..

cp -ru /source/c/!(*.*) ~/Downloads/c/

Bash에서는 extglob옵션에 의해 제어되므로 오류가 발생하면 를 사용하여 켜야 합니다 shopt -s extglob. 끄고 싶으면 를 사용하세요 shopt -u extglob.

숨겨진 파일(필요함)을 복사하려는 경우 shopt -s dotglob파일 이름을 제외할 수도 있습니다. 예를 들어 .bashrc제외되는 것으로 간주될 수도 있습니다.확장하다(유닉스에서는 명확하게 정의되지 않은 개념):

cp -ru /source/c/!(?*.*) ~/Downloads/c/

관련 정보