macOS 터미널을 사용하여 하위 디렉터리 내에서 디렉터리 찾기

macOS 터미널을 사용하여 하위 디렉터리 내에서 디렉터리 찾기

xmacOS 터미널을 사용하여 특정 하위 디렉토리 내의 디렉토리를 찾고 싶지만 y모르겠습니다 y.

이 명령은 find / -type d -name "x"찾기에 작동하지만 x시스템에 명명된 디렉터리가 많기 때문에 해당 디렉터리 아래에서 디렉터리를 찾아야 합니다.xxy

나는 노력했다 -

  • find / -type d -name "/y/x"또는
  • find / -type d -name "y/x"또는
  • find / -type d -name "../y/x"

그러나 이것들은 나에게 원하는 결과를 제공하지 않습니다.

답변1

기본 사용 -path:

find / -path '*y/x'
-path pattern
         True if the pathname being examined matches pattern.  Special shell pattern matching characters (``['', ``]'', ``*'', and ``?'') may be used as part of
         pattern.  These characters may be matched explicitly by escaping them with a backslash (``\'').  Slashes (``/'') are treated as normal characters and do
         not have to be matched explicitly.

답변2

zsh셸 에서 :

print -rC1 -- /**/y/x(/D)

glob은 **하위 디렉터리와 일치하며, (/D)glob 한정자는 생성된 경로 이름이 디렉터리여야 하고 패턴도 숨겨진 이름과 일치해야 함을 지정합니다( dotglob에서 와 같이 bash).

또는 버전 4 이상과 유사한 기능 bash(예: 기본 설치가 아닌 macOS의 Homebrew에서 설치 bash):

shopt -s globstar failglob dotglob
printf '%s\n' /**/y/x/

globstar옵션을 사용 하면 와일드카드 패턴을 bash사용할 수 **있으며 failglob일치하는 항목이 없으면 오류와 함께 패턴 일치가 실패하게 됩니다. 이 동작은 의 가용성과 마찬가지로 failglob의 기본값입니다 .zsh**

find하지만 더 빠를 수도 있습니다.

find / -type d -path '*/y/x'

x들어갈 것입니다.y/

또는 locate사용할 수 있는 함수 유틸리티 가 있을 수도 있습니다.

locate '*/y/x'

이는 가장 빠른 대안이지만 시스템의 모든 사용자가 액세스할 수 있는 결과만 반환하며 완전히 최신이 아닐 수도 있습니다.

관련 정보