특정 디렉터리의 폴더 수를 계산하는 방법. 다음 명령을 사용하고 있지만 항상 추가 명령을 제공합니다.
find /directory/ -maxdepth 1 -type d -print| wc -l
예를 들어, 3 개의 폴더가있는 경우이 명령은 4를 제공합니다. 5 개의 폴더가 포함 된 경우 명령은 6을 제공합니다. 그 이유는 무엇입니까?
답변
find
디렉토리 자체도 인쇄합니다.
$ find .vim/ -maxdepth 1 -type d
.vim/
.vim/indent
.vim/colors
.vim/doc
.vim/after
.vim/autoload
.vim/compiler
.vim/plugin
.vim/syntax
.vim/ftplugin
.vim/bundle
.vim/ftdetect
대신 디렉토리의 하위 항목을 테스트하고 하위 항목으로 내려 가지 않도록 할 수 있습니다.
$ find .vim/* -maxdepth 0 -type d
.vim/after
.vim/autoload
.vim/bundle
.vim/colors
.vim/compiler
.vim/doc
.vim/ftdetect
.vim/ftplugin
.vim/indent
.vim/plugin
.vim/syntax
$ find .vim/* -maxdepth 0 -type d | wc -l
11
$ find .vim/ -maxdepth 1 -type d | wc -l
12
다음을 사용할 수도 있습니다 ls
.
$ ls -l .vim | grep -c ^d
11
$ ls -l .vim
total 52
drwxrwxr-x 3 anossovp anossovp 4096 Aug 29 2012 after
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 autoload
drwxrwxr-x 13 anossovp anossovp 4096 Aug 29 2012 bundle
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 colors
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 compiler
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 doc
-rw-rw-r-- 1 anossovp anossovp 48 Aug 29 2012 filetype.vim
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 ftdetect
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 ftplugin
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 indent
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 plugin
-rw-rw-r-- 1 anossovp anossovp 2505 Aug 29 2012 README.rst
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 syntax
$ ls -l .vim | grep ^d
drwxrwxr-x 3 anossovp anossovp 4096 Aug 29 2012 after
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 autoload
drwxrwxr-x 13 anossovp anossovp 4096 Aug 29 2012 bundle
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 colors
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 compiler
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 doc
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 ftdetect
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 ftplugin
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 indent
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 plugin
drwxrwxr-x 2 anossovp anossovp 4096 Aug 29 2012 syntax
답변
현재 디렉터리의 디렉터리 수만 가져옵니다.
echo */ | wc
당신은 밖으로 나올 것입니다 1 309 4594
2nd digit
아니오를 나타냅니다. 디렉토리의.
또는
tree -L 1 | tail -1
답변
find . -mindepth 1 -maxdepth 1 -type d | wc -l
For find -mindepth
는 디렉토리의 총 수를 의미합니다.
-maxdepth
디렉토리에 영향을 미치는 총 수를 의미합니다.
-type d
디렉토리를 의미
그리고 for wc -l
는 입력의 줄을 세는 것을 의미합니다.
답변
폴더에 디렉토리 만 있고 파일이없는 경우 다음을 수행합니다.
ls | wc -l
답변
드라이브로 이동하여 실행하는 가장 좋은 방법
ls -lR | grep ^d | wc -l
하위 디렉토리를 포함하여 전체 폴더를 모두 찾으시겠습니까?
find /mount/point -type d | wc -l
… 또는 루트 디렉터리 (하위 디렉터리 제외)에서 모든 폴더를 찾습니까?
find /mount/point -maxdepth 1 -type d | wc -l
건배!
답변
stat -c %h folder
결과에서 2를 실행 하고 뺍니다. 여기에서는 대부분의 다른 솔루션 (일반적으로 find
더하기 wc
)에 필요한 2 개 (또는 3 개)와 달리 단일 하위 프로세스 만 사용합니다 .
sh / bash 사용 :
cnt = $ ((`stat -c % h folder`-2))
echo $ cnt # ‘echo’는 추가 프로세스가 아닌 sh / bash 내장입니다.
csh / tcsh 사용 :
@ cnt =`stat -c % h folder`-2
echo $ cnt # ‘echo’는 추가 프로세스가 아닌 csh / tcsh 내장입니다.
설명 : stat -c %h folder
에 하드 링크의 수 출력 폴더를 , 그리고 아래의 각 하위 폴더 에 하드 링크 다시하는 ../ 항목이 포함되어 폴더를 . 개수에 두 개의 추가 하드 링크가 있으므로 2를 빼야합니다.
- 폴더 의 자체 참조 ./ 항목 및
- 폴더 의 상위 폴더 링크
답변
가장 쉬운 방법은
ls -ld images/* | wc -l
images
대상 디렉토리는 어디에 있습니까 ? -d 플래그는 디렉토리로 제한되며 -l 플래그는 wc -l
행 수에 대해 매우 익숙한 것과 호환되는 행별 목록을 수행합니다 .