UNIX에서 디렉토리 만 나열
지정된 경로의 디렉토리 만 나열하고 싶습니다 ( ls
이러한 옵션은 없습니다). 또한 한 줄 명령 으로이 작업을 수행 할 수 있습니까?
ls -d */
현재 디렉토리 내의 디렉토리를 나열하려면 이것을 시도하십시오
이 시도:
find . -maxdepth 1 -type d
다음과 같은
find * -maxdepth 0 -type d
기본적으로 조건에 따라 '*', 즉 현재 디렉토리의 모든 항목의 확장을 필터링합니다 -type d
.
이점은 출력이와 동일 ls -1 *
하지만 디렉토리 및 항목 만 도트로 시작하지 않는다는 것입니다.
ls -d */
또는 사용할 수 있습니다tree -d
또 다른 해결책은 globbing이지만 이것은 사용중인 쉘과 디렉토리 globbing이 지원되는지 여부에 따라 다릅니다.
예를 들어 ZSH :
zsh # ls *(/)
그것을하는 수십 가지 방법이 있기 때문에 여기 또 다른 방법이 있습니다.
tree -d -L 1 -i --noreport
- -d : 디렉토리
- -L : 나무의 깊이 (따라서 1, 작업 디렉토리)
- -i : 들여 쓰기 없음, 인쇄 이름 만
- --noreport : 트리 목록 끝에 정보를보고하지 않습니다
ls -l | grep '^d'
별명을 작성하여 프로파일 파일에 넣을 수 있습니다.
alias ld="ls -l| grep '^d'"
find . -maxdepth 1 -type d -name [^\.]\* | sed 's:^\./::'
현재 작업 디렉토리의 디렉토리를 나열하기 위해 ls -d */
사용할 수 있습니다. 숨겨진 디렉토리를 나열 해야하는 경우이 명령을 사용하십시오.ls -d .*/
이것을 사용하여 디렉토리 목록을 얻으십시오.
ls -d */ | sed -e "s/\///g"
대답은 쉘에 따라 다릅니다 .
에서은 zsh
, 예를 들어, 다음을 수행 할 수 있습니다 :
echo *(/)
그리고 현재 작업 디렉토리 내의 모든 디렉토리가 표시됩니다.
자세한 내용 man zshexpn
은 참조하십시오.
다른 접근법은을 사용하는 것이며 find(1)
, 대부분의 유닉스 풍미에서 작동합니다.
find . -maxdepth 1 -type d -print
find(1)
많은 용도가 있으므로 꼭 추천 man find
합니다.
find specifiedpath -type d
하위 디렉토리에서 재귀를 원하지 않으면 대신 다음을 수행하십시오.
find specifiedpath -type d -mindepth 1 -maxdepth 1
"dot"디렉토리 (이름이로 시작 .
)도 나열됩니다. 그러나 특별한 디렉토리 .
도 아닙니다 ..
. "도트"디렉토리를 원하지 않으면 다음과 같이 할 수 있습니다 grep
.
find specifiedpath -type d -mindepth 1 -maxdepth 1 | grep -v '^\.'
스위치 tree
와 함께 명령을 사용하여 d
이를 수행 할 수 있습니다 .
% tree -d tstdir
tstdir
|-- d1
| `-- d11
| `-- d111
`-- d2
`-- d21
`-- d211
6 directories
자세한 내용은 참조하십시오 man 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 디렉토리가 없습니다.
### If you need full path of dir and list selective dir with "name" of dir(or dir_prefix*):
find $(pwd) -maxdepth 1 -type d -name "SL*"
이것은 나를 위해 일하고있다 :
`ls -F | grep /`
(그러나 echo */
@nos에서 언급 한대로 전환하고 있습니다)
연결된 디렉토리를 보여주는 또 다른 솔루션이 있습니다. "normal"ls -l 출력의 하위 집합이기 때문에 약간 선호합니다.
ls -1d */ | rev | cut -c2- | rev | xargs ls -ld --color=always
du -d1
is perhaps the shortest option. (As long as you don't need to pipe the input to another command.)
To list only directories in a specified path,just type ls -l | grep drw
참고URL : https://stackoverflow.com/questions/3667329/listing-only-directories-in-unix
'IT story' 카테고리의 다른 글
ExpandoObject에 동적으로 속성 추가 (0) | 2020.04.29 |
---|---|
갈퀴 작업에서 일찍 돌아 오려면 어떻게해야합니까? (0) | 2020.04.29 |
LINQ를 사용한 여러 주문 방법 (0) | 2020.04.29 |
리눅스 커맨드 라인에서 sha256 생성하기 (0) | 2020.04.29 |
콘텐츠 보안 정책은 어떻게 작동합니까? (0) | 2020.04.29 |