두 개의 하위 디렉터리가 있는 모든 디렉터리 찾기 [닫기]

두 개의 하위 디렉터리가 있는 모든 디렉터리 찾기 [닫기]

주문하다

find ~ -maxdepth 2 -mindepth 2

다른 해결책이 작동하지 않습니까?

글쎄요, 해결책을 찾았습니다.

find ~ -maxdepth 1 -links 4 -type d

이 문제를 해결하려고 노력하는 사람들을 위해

답변1

find . -type d -exec sh -c '
    for pathname do
        set -- "$pathname"/*/
        [ "$#" -eq 2 ] && printf "%s\n" "$pathname"
    done' sh {} +

위 명령은 두 개의 하위 디렉터리를 포함하는 현재 디렉터리 아래의 모든 디렉터리의 경로 이름을 인쇄합니다.

인라인 스크립트는 배치 sh -c에서 발견된 디렉토리의 경로 이름을 가져오고 find한 번에 한 디렉토리씩 각 배치를 반복합니다.

각 디렉토리에 대해 $pathname쉘 글로브가 "$pathname"/*/확장됩니다. 이 패턴은 바로 아래에 있는 모든 하위 디렉터리의 모든 경로 이름으로 확장됩니다 $pathname(또는 하위 디렉터리가 없으면 확장되지 않은 상태로 유지됩니다). 이 인수에는 $#패턴이 확장되는 항목 수가 포함되며, 2개인 경우 디렉터리 경로가 인쇄됩니다.

위의 내용은 숨겨진 디렉터리를 계산하지 않습니다. 이렇게 하려면 다음을 사용하세요. 쉘 옵션이 bash활성화된 상태에서:dotglob

find . -type d -exec bash -O dotglob -c '
    for pathname do
        set -- "$pathname"/*/
        [ "$#" -eq 2 ] && printf "%s\n" "$pathname"
    done' bash {} +

관련된:

답변2

stat쓸 수 있는? 하드 링크 수를 2(상위 디렉터리 링크 + ..링크) + 하위 디렉터리 수로 사용하여 시도해 보세요.

stat -c"%n %F %h" * | sed -n '/directory 4/ s///p;'

관련 정보