하위 디렉터리에서 경로 디렉터리 찾기

하위 디렉터리에서 경로 디렉터리 찾기

bbb다음과 같은 상위 디렉터리의 디렉터리 이름에 대한 경로를 찾고 싶습니다.aaa

예를 들어

/aaa/bbb
/tmp/aaa/bbb
/usr/bin/aaa/bbb
/home/aaa/bbb
/home/aaa/xxx/bbb

그래서 나는 다음과 같이 썼습니다.

find /*/aaa -name bbb

일부 플랫폼에서는 작동하지만 일부에서는 작동하지 않으며 어떤 경우에도 /aaa/bbb상위 디렉터리가 없기 때문에 찾을 수 없습니다.aaa

달릴 수도 있을 것 같은데, find / -name bbb | grep \/aaa더 똑똑한 게 없을까...?

답변1

-path이 경우 이 옵션을 사용하십시오.

find / -type d  -path '*/aaa/bbb'

찾은 매뉴얼 페이지에서 :

파일 이름은 쉘 패턴과 일치합니다. 메타 문자는 처리 /되거나 .특별하지 않습니다. 예를 들어 다음과 같습니다.

find . -path "./sr*sc"

"./src/misc"라는 디렉터리가 있으면 해당 디렉터리에 대한 항목을 인쇄합니다.

플랫폼 간 호환성

편집하다:방금 알아차렸어그리고상표.

find사용 중인 버전을 지정하지 않았습니다 . 위 정보는 GNU find에 대한 것입니다. 그러나 매뉴얼 페이지에는 다음과 같이 명시되어 있습니다.

Predicate-path는 HP-UX find에서도 지원되며 향후 POSIX 표준 버전에 나타날 예정입니다.

따라서 HP-UX에서는 작동하는 것처럼 보이지만 -pathAIX에서는 작동하지 않습니다(적어도AIX 7.1이 아님, 2015년 8월 24일에 마지막으로 게시됨).

답변2

/*/aaa는 /aaa와 일치하지 않으므로 find는 /aaa/bbb를 찾을 수 없습니다.

/에서 조회를 시작하는 것을 좋아하지 않고 -path-enabled 조회와 같은 최근 휴대용 검색이 없는 경우 더 나은 수동 시작 목록이 필요합니다.

관련 정보