'ls'명령에 디렉토리 만 표시되는 옵션이 있습니까?


73

때로는 파일이 아닌 디렉토리 만 확인해야합니다. ls 명령에 옵션이 있습니까? 아니면 그렇게하는 유틸리티가 있습니까?

편집 : Mac OS X를 사용하고 있으며 디렉토리가 있어도 ls -d나에게 제공합니다 ..


4
누군가가 왜 ls -d제공 만하고 왜 그것이 작동하도록하기 위해 추가 .해야하는지 설명 할 수 있습니까 */?
cwd

3
@cwd 파일을 지정하지 않으면 ls기본값은 .입니다. 그리고 -d디렉토리의 내용을 인쇄하지 말고 디렉토리 자체를 인쇄하십시오.
Mikel

1
@cwd 는 디렉토리 이름 뒤에 다음을 ls -p보여줍니다 /. 그래서 */디렉토리 이름에 대해 일치 단지 패턴 /콤보.
Pitt

~ / .bash_aliases 파일에 대해 @Steven_D의 답변을 구현하는 함수를 만들었습니다. gist.github.com/rjurney/998f4951a57bfa5daeb9a6c18f6f4827
rjurney

답변:


84

이미 선택된 답변이 있음을 알고 있지만 다음과 같이 요청 된 동작을 얻을 수 있습니다 ls.

ls -ld -- */

( '-'는 매개 변수의 끝을 나타내므로 하이픈으로 시작하는 폴더 이름이 추가 명령 옵션으로 해석되지 않습니다.)

여기에는 현재 작업중인 디렉토리 (숨겨진 디렉토리를 확장하도록 쉘 글로브를 구성하지 않는 한)가 아닌 모든 디렉토리가 나열됩니다 (디렉토리에 대한 심볼릭 링크도 포함됨). 다른 폴더의 모든 하위 디렉토리를 얻으려면 다음을 시도하십시오.

ls -ld /path/to/directory/*/

-l은 선택 사항입니다.


5
좋은. 나는 디렉토리가 /결국 암시 적이라고 생각하지 않았지만 이제는 대답하는 것이 합리적이라고 생각합니다. 결국, 탭 완성은 항상 그것을 추가합니다.
gvkv

-d for dir, -l for long format. 의 목적은 --무엇입니까?
Dineshkumar

1
이것은 짧아 보이고 대부분의 경우 작동하지만 디렉토리의 심볼릭 링크가 아닌 실제 디렉토리가 필요할 때이 방법을 사용하지 않을 수 있습니다. 그래서 find이 경우에 좋은 선택이 실제로.
biocyberman 2012 년

1
find또한 디렉토리 수가 최대 인수 길이를 초과 할 경우 이점이 있습니다.
Steven D

거꾸로 작업하면서 확장 기능을 가진 모든 것을 무시할 수 있다는 것을 깨달았습니다 ls -alhF --ignore=*.*. 이것이 '숨겨진'폴더를 얼마나 잘 처리하는지 잘 모르겠습니다..myHiddenFolder
Timmah

14

아니요, 그러나 간단한 find명령으로 수행 할 수 있습니다.

find . -type d -depth 1

또는 grep

ls -F | grep /

그런 다음 필요한 경우 별명을 지정할 수 있습니다.


6
우분투 14.04에서는이었습니다 -maxdepth 1. 또한 find순서를 find . -maxdepth 1 -type d
바꾸고

ls -F | grep /해결책은 놀라운 일입니다! FreeBSD 머신에서 작업 할 수있는 유일한 것 같습니다. 나는 물고기를 사용하면 아무것도 */작동하지 않을 수 있다고 생각 합니까?
CJM

나는 물고기와 함께 일한 적이 없으므로 그것에 대해 확실하지 않지만 -F 옵션은 놀라운 일이 될 수 있습니다.
gvkv

7

트리 유틸리티가 디렉토리 구조에 대한 개요를 얻는 것을 좋아합니다 . MacPorts와 내가 시도한 모든 Linux 배포판에서 사용할 수 있습니다.

tree -d -L 2

두 디렉토리 깊이의 모든 디렉토리가 표시됩니다.


5

또한 숨겨진 디렉토리를보아야하므로 위의 제안을 필요에 맞게 수정했습니다.

ls -d -- */ .*/

(쉘에 따라, 즉,도 포함 .하고 ..)


2

zsh(맥 OS에서 기본적으로 발견, 심지어로 사용 /bin/sh이), 당신은 자신의 유형에 따라 파일을 선택 글로브 한정자를 사용하십시오 :

  • 숨겨지지 않은 디렉토리를 나열하십시오.

    ls -d -- *(/)
    
  • 모든 디렉토리를 나열하십시오.

    ls -d -- *(D/)
    

    ( .그리고 ..당신이 그들을 원하는 경우 항상 제외하고, 개별적으로 추가)

  • 디렉토리에 대한 심볼릭 링크도 포함하십시오.

    ls -d -- *(D-/)
    

    ( -심볼릭 분석 후에 더 많은 한정자가 적용되도록합니다).


-1

ls는 Mac OS X에 버그가 있다고 생각합니다. 해결 방법은 grep을 사용하는 것입니다 ... ls -l / | grep "^d"


1
내가 grep "^d"핵 을 사용하는 유일한 사람이 아님을 아는 것이 좋습니다
Michael Mrozek

6
내가 아는 한, 그가 설명하는 동작은 버그가 아니며 GNU ls를 사용하는 경우에도 동일합니다. -d 옵션은 내용이 아닌 디렉토리 목록을 표시합니다. 이 도움이 될 수있는 이유를 보는 것은 차이를 참조하십시오 ls -l /homels -dl /home
스티븐 D

캐럿은 껍질에 특별하지 않습니다. 당신은 사용할 수 있습니다 ls -l / | grep ^d. 당신이 만약 된다 당신이 매개 변수 확장을 필요로하지 않기 때문에, 따옴표를 사용 그들을 만들려고 단일 따옴표. ls -l / | grep '^d'. 네, 저는 pedant입니다. 그러나 실제로 이것을하십시오. :)
와일드 카드

-1
$ ls -p | grep /

-p플래그는 것 ls파일이 디렉토리이면 각 파일 이름 뒤에 슬래시 ( '/')를 추가합니다.


-2

가장 쉬운 방법은 다음 명령을 입력하는 것입니다. 이것은 대부분의 UNIX 및 Linux 플랫폼 및 버전에서 작동합니다. -F원하는 경우 생략 할 수 있지만 디렉토리 이름 끝에 /를 추가하는 인수입니다. 이 -C인수는 디렉토리 이름 만 캡처합니다. 모두 현재 디렉토리에 있습니다. 현재 경로에서 디렉토리 및 하위 디렉토리 만 보려면 -R인수 ( ls -CFR) 를 추가하십시오 .

# ls -CF
/dir1  /dir2  /dir3  /beaches  /Work  /Other 

1
모두에서 ls구현 나는 알고의 POSIX 사양에 ls, -C에 출력하는 것입니다 이 아닌 디렉토리 파일을 건너 뛸 수 없습니다. 귀하의 예에서는 /파일 이름 앞에 인쇄되며 ls구현은 수행하지 않습니다. 로 -F, /디렉토리 파일의 파일 이름에 추가됩니다.
Stéphane Chazelas 2016 년

이 답변을 보았을 때 나는“이것이 어디에 있습니까?”@ StéphaneChazelas와 Jeff Schaller가 궁금했습니다.
G-Man

-3
ls -G

이것은 디렉토리를 파란색으로 표시합니다


1
당신이 볼 수 있나요 디렉토리 만 이 명령을 사용하는 경우?
don_crissti
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.