현재 디렉토리의 하위 디렉토리를 나열하는 올바른 방법이 있습니까?

현재 디렉토리의 하위 디렉토리를 나열하는 올바른 방법이 있습니까?

다음을 통해 디렉토리의 하위 디렉토리를 찾을 수 있습니다.

ls -d -- */

또는

ls -l | grep "^d"

그러나 둘 다 간접적인 것 같습니다. 디렉토리를 찾는 표준 방법이 있을 것이라고 생각합니다. 올바른 방법이 있나요? 그렇지 않은 경우 이들 중 하나가 극단적인 경우에 잘못된 동작으로 이어질 수 있습니까? (심볼릭 링크, 숨겨진 디렉터리 등)

답변1

대답은 당신의 의도에 따라 달라집니다~와 함께하다당신이 찾고있는 것 대신에 출력하십시오. 시각적 참조를 위해 터미널에서 목록을 보고 싶다면 첫 번째 솔루션이 실제로 꽤 좋습니다. 출력을 처리하려면 다른 방법을 사용하는 것을 고려해야 합니다.

다른 프로그램에 목록을 입력하는 가장 안정적인 방법 중 하나는 를 사용하는 것입니다 find.

find -maxdepth 1 -type d

이것이 피드에 좋은 이유는 find널로 구분된 데이터를 출력하는 데 사용할 수 있거나 -print0적절하게 이스케이프된 문자열을 다른 프로그램에 대한 인수로 사용하는 데 사용할 수 있기 때문입니다 -exec. 이것이 ls의 출력을 구문 분석하는 것보다 나은 이유에 대한 참조는 다음을 참조하세요.LS 분석Greg의 Wikipedia에서.

답변2

참고 - ZSH(BASH는 아님)에서는 다음을 수행할 수도 있습니다 ls -d -- *(/).(/)수정자전역 디렉터리만 사용하도록 ZSH에 지시합니다.

즉, 자신이 제안한 솔루션( )과 크게 다르지 않으며 ls -d -- */표준과도 거리가 멀습니다.

출력은 다음과 같습니다 ls(다른 플래그에 따라 다를 수 있음).

% ls
dir0 dir1 dir2 file0 file1 file2
% ls -d -- */
dir0/ dir1/ dir2/
% ls -d -- *(/)
dir0 dir1 dir2

관련 정보