ls **/*!(test).rb
"test"로 끝나지 않는 모든 Ruby 파일로 확장 하려고 합니다 . 그러나 지금까지 시도한 것은 아무것도 도움이 되지 않았습니다. ZSH의 확장된 글로빙 옵션을 켜려고 했지만 성공하지 못했습니다.
유사한 작업을 수행할 수 있다는 것을 알고 있지만 ls -l **/*.rb | grep -v test
와일드카드만 사용하여 수행하고 싶습니다.
답변1
setopt extended_glob; ls -d -- **/(^*test).rb
또는
setopt ksh_glob; ls -d -- **/!(*test).rb
버전( )과 다른 형식도 파일 이름의 일부 와 일치하고 부정은 빈 문자열과 일치하므로 *!(test).rb
와도 일치합니다 .foo-test.rb
*
foo-test
!(test)
"ksh-glob" 형식은 , 에서도 작동 합니다 bash
.shopt -s globstar extglob
#! /bin/bash
shopt -s globstar extglob
ls -d -- **/!(*test).rb
Bash에서는 와 확장 모드 사용 사이에 개행 문자가 있어야 하며 shopt -s extglob
, 두 개는 동일한 복합 명령이나 함수의 일부가 아닐 수 있습니다.