하위 디렉터리와 일치하는 Glob

하위 디렉터리와 일치하는 Glob

부적절한 행동을 보는 사람이 저뿐만이 아니길 바랍니다. 한 시간 전에 나한테 물어봤다면 난 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)는 완전한 설명을 찾을 수 있는 곳입니다.

  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

관련 정보