x
macOS 터미널을 사용하여 특정 하위 디렉토리 내의 디렉토리를 찾고 싶지만 y
모르겠습니다 y
.
이 명령은 find / -type d -name "x"
찾기에 작동하지만 x
시스템에 명명된 디렉터리가 많기 때문에 해당 디렉터리 아래에서 디렉터리를 찾아야 합니다.x
x
y
나는 노력했다 -
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'
이는 가장 빠른 대안이지만 시스템의 모든 사용자가 액세스할 수 있는 결과만 반환하며 완전히 최신이 아닐 수도 있습니다.