주문하다
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;'