답변:
ls -d */
현재 디렉토리 내의 디렉토리를 나열하려면 이것을 시도하십시오
ls -al | grep '^d'
-이것은 훨씬 간결하다.
*/
슬래시로 끝나는 항목 만 표시 하도록 강제합니다.이 경우 -F
옵션이 ls
사용되지 않더라도 디렉토리 가됩니다. 디렉토리에서 ls *php
끝나는 모든 파일 의 동작 및 방법과 유사합니다 php
.
echo */
할 것입니다
이 시도:
find . -maxdepth 1 -type d
ls
솔루션 과 달리 find
작업 수행에 대한 책임은 전적으로 귀하에게 있습니다 (한도를 부과 할 수있는 쉘 와일드 카드 확장에 의존하지 않음). 또한 훨씬 간결합니다.
find * -maxdepth 0 -type d
.
find
일반적으로 폴더를 깊이 1로만 출력 하는 전체 재귀 검색을 수행하는 것 같습니다 .
ls -d */
또는 사용할 수 있습니다tree -d
또 다른 해결책은 globbing이지만 이것은 사용중인 쉘과 디렉토리 globbing이 지원되는지 여부에 따라 다릅니다.
예를 들어 ZSH :
zsh # ls *(/)
tree
무엇입니까?
tree
이 있으며 기본적으로 설치되어 있지 않습니다 (저장소에 있음).
tree
명령이 기본 유닉스 명령이 아니라고 생각하는 다운 보트 (잘못되면 수정하십시오).
그것을하는 수십 가지 방법이 있기 때문에 여기 또 다른 방법이 있습니다.
tree -d -L 1 -i --noreport
tree -d -L 1 -i --noreport | tail -n +2
tree -C -d -L 1 -i --noreport | tail -n+2
find . -maxdepth 1 -type d -name [^\.]\* | sed 's:^\./::'
이것을 사용하여 디렉토리 목록을 얻으십시오.
ls -d */ | sed -e "s/\///g"
find specifiedpath -type d
하위 디렉토리에서 재귀를 원하지 않으면 대신 다음을 수행하십시오.
find specifiedpath -type d -mindepth 1 -maxdepth 1
"dot"디렉토리 (이름이로 시작 .
)도 나열됩니다. 그러나 특별한 디렉토리 .
도 아닙니다 ..
. "도트"디렉토리를 원하지 않으면 다음과 같이 할 수 있습니다 grep
.
find specifiedpath -type d -mindepth 1 -maxdepth 1 | grep -v '^\.'
mindepth
제거 를 언급 하는 것에 대한 찬성 .
! 😁
대답은 쉘에 .
에서은 zsh
, 예를 들어, 다음을 수행 할 수 있습니다 :
echo *(/)
현재 작업중인 디렉토리 내의 모든 디렉토리가 표시됩니다.
보다 man zshexpn
은 참조하십시오.
다른 접근법은을 사용하는 것이며 find(1)
, 대부분의 유닉스 풍미에서 작동합니다.
find . -maxdepth 1 -type d -print
find(1)
많은 용도가 있으므로 꼭 추천 man find
합니다.
스위치 tree
와 함께 명령을 사용하여 d
이를 수행 할 수 있습니다 .
% tree -d tstdir
tstdir
|-- d1
| `-- d11
| `-- d111
`-- d2
`-- d21
`-- d211
6 directories
자세한 내용은 참조하십시오 man tree
.
tree
합니다. 글쎄, 다른 사람의 천둥을 훔치려는 의도는 아니었다.
이 디렉토리가 있다면 :
ls -l
lrwxrwxrwx 1 nagios nagios 11 août 2 18:46 conf_nagios -> /etc/icinga
-rw------- 1 nagios nagios 724930 août 15 21:00 dead.letter
-rw-r--r-- 1 nagios nagios 12312 août 23 00:13 icinga.log
-rw-r--r-- 1 nagios nagios 8323 août 23 00:12 icinga.log.gz
drwxr-xr-x 2 nagios nagios 4096 août 23 16:36 tmp
모든 디렉토리를 얻으려면 -L을 사용하여 링크를 확인하십시오.
ls -lL | grep '^d'
drwxr-xr-x 5 nagios nagios 4096 août 15 21:22 conf_nagios
drwxr-xr-x 2 nagios nagios 4096 août 23 16:41 tmp
-L없이 :
ls -l | grep '^d'
drwxr-xr-x 2 nagios nagios 4096 août 23 16:41 tmp
conf_nagios 디렉토리가 없습니다.
이것은 나를 위해 일하고있다 :
`ls -F | grep /`
(그러나 echo */
@nos에서 언급 한대로 전환하고 있습니다)
bash에서 :
ls -d */
모든 디렉토리를 나열합니다
ls -ld */
모든 디렉토리를 긴 형식으로 나열합니다
ls -ld */ .*/
숨겨진 디렉토리를 포함한 모든 디렉토리를 긴 형식으로 나열합니다.
최근에 zsh (MacOS Catalina)로 전환했으며 다음을 발견했습니다.
ls -ld */ .*/
더 이상 작동하지 않습니다 경우 현재 디렉토리는 숨겨진 디렉토리가 포함되어 있습니다.
zsh: no matches found: .*/
위의 오류를 인쇄하지만 디렉토리를 인쇄하지 못합니다.
ls -ld *(/) .*(/)
또한 같은 방식으로 실패합니다.
지금까지 나는 이것을 발견했다.
ls -ld */;ls -ld .*/
괜찮은 해결 방법입니다. 은 ;
명령 분리기이다. 그러나 숨겨진 디렉토리가 없으면 디렉토리를 나열하고 숨겨진 디렉토리가 없으면 오류를 인쇄합니다.
foo
bar
zsh: no matches found: .*/
ls
현재 디렉토리의 목록 내용에 대한 쉘 명령
-l
은 Longford에 나열하려는 것을 지정하는 플래그입니다 (한 줄에 하나의 항목 + 여러 가지 멋진 정보).
-d
모든 디렉토리를 "파일"로 나열하고 재귀 적
*/
으로 표시 하지 않는 플래그 입니다. '슬래시로 끝나는 모든 파일을 나열하십시오'라는 인수
*
는 "anything"에 대한 간단한 정규식 명령이므로*/
쉘에 " '/'로 끝나는 모든 것을 나열 요청합니다"
자세한 내용man ls
은 참조하십시오.
나는 이것을 넣었다.
alias lad="ls -ld */;ls -ld .*/"
내 .zshrc에서 제대로 작동하는 것 같습니다.
참고 : 나는 또한 그것을 발견했다
ls -ld .*/ 2> /dev/null
여전히 sterr을 터미널에 인쇄하므로 작동하지 않습니다. 해결책을 찾으면 답변을 업데이트 할 것입니다.
긴 디렉토리 목록
디렉토리 목록
- LS를 -d * /