Linux를 사용하여 드라이브의 폴더 수를 어떻게 계산합니까?


24

폴더가 500 개를 넘지 않도록 외장 HDD를 구성해야합니다. 우분투의 "속성"창에는 폴더 수가 아닌 파일 수가 표시됩니다.

하위 디렉토리의 수를 알려주는 간단한 명령 행이 있습니까?

재귀 적으로 계산해야하며 드라이브는에 ​​장착 된 외장 HDD /media/MUSIC/입니다. 이 문서는 처음 500 개의 폴더 만 읽습니다.

답변:


20

드라이브로 이동하여 간단히 실행하십시오.

ls -lR | grep ^d | wc -l

이것은 3 년 전에 수락 한 것보다 더 정확한 숫자를 제공하는 것으로 보입니다. 내가했던 디렉토리를 세는 반면 그렇지는 않았습니다.
Dean Rather

나는 다른 숫자도 보지만 너무 다르지 않습니다.
SPRBRN

개인적으로 나는 grep -c이상을 선호 합니다 wc -l. 어쩌면 나일지도 몰라
Maxim_united

1
디렉토리 항목에 시퀀스가 ​​포함 된 경우 위의 값이 초과됩니다 \nd( \nNL 문자 위치).
Toby Speight

1
Toby가 맞습니다. ls출력은 파이프로되어 있지 않습니다 . 또한 전체 트리를 출력 한 다음 grep을 실행해야하기 때문에 속도가 훨씬 느려질 것입니다.
phuclv

37

하위 디렉토리를 포함한 모든 폴더를 찾으십니까?

find /mount/point -type d | wc -l

... 또는 루트 디렉토리에서 모든 폴더를 찾으십니까 (하위 디렉토리 제외)?

find /mount/point -maxdepth 1 -type d | wc -l

그 첫 번째는 내가 추구하는 것입니다. 감사!
Dean Rather

@Dean : 예, 음악 컬렉션의 디렉토리를 세는데도 사용했습니다. :) 자랑 할 권리를 위해, 당신의 MP3를 세십시오 : find / mount / point -type f | grep -i mp3 | 화장실 -l
퀵 퀵소트

1
@Dean : 예, 찾기 구문을 알지 못하지만 일반적으로 grep -v 를 사용합니다. find / mount / pt -type f | grep -vi mp3 | grep -vi wav | wc -l ... (그리고 <i> </ i>는 주석에서 작동하지 않습니다, *foo*이탤릭체로 사용하십시오 : foo )
quack quixote

2
@Dean : 난 그냥 사용하는 거라고 생각 find /path -not -iname '*.mp3' | wc -l필터 MP3 파일로, 또는 두 가지 모두 MP3 파일 및 WAVS 사용을 얻을find /path -not -iname '*.mp3' -not -iname '*.wav' | wc -l
돌팔이 의사 키호테

1
폴더를 무시하려면 -type f 를 추가해야 하지만 축하합니다! 방금 몰랐던 m4a 파일을 발견했습니다 ... 감사합니다!
Dean Rather

4

줄 바꿈은 디렉토리 이름에 유효한 문자입니다. find찾은 각 디렉토리에 대해 빈 줄을 인쇄 한 다음 wc해당 줄을 세어 보도록 제안 합니다.

find /mount/point -type d -printf '\n' | wc -l

3

다음을 시도하십시오 [아래 참조] :

ls -1 -p | grep "/" | wc -l

하위 디렉토리 인 항목에 대해 슬래시와 함께 현재 디렉토리의 한 열 목록을 인쇄 한 다음 슬래시로 행을 계산합니다.

편집 : 아마도 좀 더 명시 적으로 quckquite의 대답을 사용해야 할 것입니다. (Quick의 제안을 고려한 후) 내 것을 수정했습니다.

ls -Rp | grep "/$" | wc -l

재귀로 가기 위해 -R을 추가해야하고 (명언하지 못해서 죄송합니다) ls의 경로를 지정해야하지만 그래도 작동합니다. ls -1 -p -R / media / MUSIC / | grep "/"| 화장실 -l 감사합니다!
Dean Rather

quixote의 제안과 quickote의 제안을 모두 시도한 후, 나는 두 가지 다른 결과를 얻었습니다. 어쨌든 고마워!
Dean Rather

1
당신은 필요하지 않습니다 -1때문에 LS는 파이프를 감지하지 않습니다 형식 열 것입니다. 또한을 사용하여 재귀 목록을 가져올 수 -R있지만 "/$"후행 슬래시와 만 일치 하도록 grep하고 싶을 수도 있습니다 (또는 카운트가 해제됩니다). 최종 버전 :ls -Rp | grep "/$" | wc -l
quack quixote

1
찾기 내가 게시 된 버전을 계산합니다 .(즉 /mount/point, 그 수에)이 LS의 내 위의 의견에 버전을하지 않습니다. 이러한 개수는 1 씩 다르므로 find 명령 /mount/point/*에서이를 사용 하여 이를 수정할 수 있습니다 (숨겨진 점 디렉토리가 없다고 가정).
quack quixote

왜 두 가지 다른 결과를 얻었는지 잘 모르겠지만 @quack의 방법에는 "숨겨진"디렉토리 (예 : '.'로 시작하는 디렉토리)가 포함됩니다.
stuntmouse

1

익스텐트 매핑을 지원하는 회전 디스크 및 파일 시스템과 같은 특정 상황에서 재귀 파일 계산 속도를 높이기 위해 ffcnt 를 작성 했습니다 .

접근 방식 ls이나 find기반 접근 방식 보다 훨씬 빠릅니다.


1

많은 디렉토리가있는 경우와 같은 도구는 tree완료되거나 중단되는 데 시간이 오래 걸리므로보다 효율적인 것을 사용하고 싶을 수 있습니다.

내가 생각할 수있는 디렉토리를 계산하는 가장 효율적인 방법은 다음과 같습니다 . 전체 경로와 파일 이름 대신 찾은 각 폴더마다 find하나씩 만 인쇄 .하고 wc문자 수를 반복해야하기 때문입니다.

find /mount/point -type d -printf '.' |wc -c

/mount/point계산에서 제외 하고 하위 디렉토리 만 계산하려면 다음을 수행하십시오.

find /mount/point -mindepth 1 -type d -printf '.' |wc -c

1

du --inodes유용한 것으로 나타 났지만 어떤 버전이 du필요한지 잘 모르겠습니다 . 우분투 17.10에서는 다음이 작동합니다.

du --inodes      # all files and subdirectories
du --inodes -s   # summary
du --inodes -d 2 # depth 2 at most

와 결합 | sort -nr포함하는 아이 노드의 수에 의해 정렬 내림차순으로.


0

나는 나무를 사용하여 디렉토리 수를 가져 오는 것을 좋아합니다.

tree -d -R -fi --noreport | wc -l

또는 찾기를 사용하여 대부분의 폴더가

find . -type d -printf "%h\n" | cut -d/ -f-2 | sort | uniq -c | sort -rn

또는 같은 것 : 나무 | grep -e '^. * directory',
mindcrime

-2

현재 디렉토리에서 폴더 및 디렉토리 수를 찾으려면

터미널에 다음 명령을 입력하십시오

echo */ | wc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.