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에서는 작동하는 것처럼 보이지만 -path
AIX에서는 작동하지 않습니다(적어도AIX 7.1이 아님, 2015년 8월 24일에 마지막으로 게시됨).
답변2
/*/aaa는 /aaa와 일치하지 않으므로 find는 /aaa/bbb를 찾을 수 없습니다.
/에서 조회를 시작하는 것을 좋아하지 않고 -path-enabled 조회와 같은 최근 휴대용 검색이 없는 경우 더 나은 수동 시작 목록이 필요합니다.