현재 디렉토리의 하위 디렉토리를 나열하는 올바른 방법이 있습니까? 가지가 간접적으로

나는 디렉토리의 하위 디렉토리를 찾을 수 있습니다

ls -d -- */

또는

ls -l | grep "^d"

그러나이 두 가지가 간접적으로 보이므로 디렉토리를 찾는 표준 방법이 있다고 생각합니다. 올바른 방법이 있습니까? 그리고 그렇지 않다면,이 두 가지 중 어느 것이 엣지 케이스에서 바람직하지 않은 동작으로 이어질까요? (심볼릭 링크, 숨겨진 디렉토리 등)



답변

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

목록을 다른 프로그램에 제공하는 가장 강력한 방법 중 하나는 사용하는 것 find입니다.

find -maxdepth 1 -type d

피드에 유용한 이유는을 find사용하여 -print0문자열을 인수로 사용 하거나 문자열을 올바르게 이스케이프 처리 하여 null로 구분하여 데이터를 출력 할 수 있기 때문 -exec입니다. 이것이 ls의 출력을 구문 분석하는 것보다 더 좋은 이유에 대한 참조는 Greg의 Wiki의 ParsingLS 를 참조하십시오 .


답변

참고로 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