부적절한 행동을 보는 사람이 저뿐만이 아니길 바랍니다. 한 시간 전에 나한테 물어봤다면 난 99% 확신했을 텐데.
test/src/**/*.js
src의 모든 .js 파일과 src의 모든 하위 디렉터리와 일치합니다. 하지만 저는 MacOS를 사용하고 있으며 Bash 3.2.57을 사용하고 있으며 여러 파일과 일치하지 않습니다.
무엇이 잘못될 수 있는지 아는 사람이 있나요?
답변1
Bash 3.2는 globstar를 지원하지 않습니다:
$ shopt -s globstar
bash: shopt: globstar: invalid shell option name
아니요 shopt -s globstar
, **
일반적인 비재귀적 글로브입니다.
사육제정보페이지 내용은 다음과 같습니다.
이것은 bash-3.2 출시 이후 bash-4.0에 추가된 새로운 기능에 대한 간략한 설명입니다. 항상 그렇듯이 매뉴얼 페이지(doc/bash.1)는 완전한 설명을 찾을 수 있는 곳입니다.
배쉬의 새로운 기능
[...]
w. 새로운 쉘 옵션이 있습니다:
globstar
. 활성화되면 와일드카드 코드는**
특별히 처리됩니다. 즉, 모든 디렉터리(해당되는 경우 그 안에 있는 파일도 포함)를 반복적으로 일치시킵니다.
bash를 최소 4.0으로 업데이트하거나(아마도 homebrew에서 설치) find
.
답변2
대신 이것을 사용할 수 있습니다 find
. 예를 들어:
find ./test/src -type f -name \*.js
디렉터리 깊이를 2개로만 제한하려면 다음을 수행하세요.
find ./test/src -maxdepth 2 -type f -name \*.js