디렉토리의 모든 파일을 반복적으로 계산합니다 [중복]


198

가능한 중복 :
Linux를 사용하여 드라이브의 폴더 수를 어떻게 계산할 수 있습니까?

Linux 상자에 정말 깊은 디렉토리 트리가 있습니다. 모든 하위 디렉토리를 포함하여 해당 경로의 모든 파일을 계산하고 싶습니다.

예를 들어이 디렉토리 트리에서

/home/blue
/home/red
/home/dir/green
/home/dir/yellow
/home/otherDir/

에 전달하면 /home네 개의 파일을 반환하고 싶습니다. 또는 네 개의 파일과 두 개의 디렉토리를 반환하는 경우 보너스 포인트입니다. 기본적으로 Windows에서 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하고 해당 폴더에 얼마나 많은 파일 / 폴더가 있는지 확인하는 것과 같습니다.

가장 쉬운 방법은 무엇입니까? 필자가 작성한 Python 스크립트와 관련된 솔루션이 있지만 왜 이렇게 실행하기가 쉽지 ls | wc않습니까?


데이터베이스가 최신 상태 인 경우 (또는 내 Mac :) 원하는대로 정확하게 검색하지 말고 매우 빠른 총계를 얻으 십시오 . 그러나 : 파일도에 포함되며 폴더 자체 도 계산 됩니다. locatelocate /some/path | wc -llocate -c /some/path/this/other/path/with/some/path
Arjan

그건 그렇고, 이것은 다르지만 밀접하게 관련된 문제 (드라이브의 모든 디렉토리 계산) 및 해결책 : superuser.com/questions/129088/…
Amanda

답변:


340

find . -type f | wc -l

설명 : 이 ( . ) 디렉토리 및 모든 서브 디렉토리에서
find . -type f모든 파일 ( -type f )을 찾으면 파일 이름이 한 줄에 하나씩 표준 출력으로 인쇄됩니다.

그런 다음 파이프 | wc(단어 수)이 -l옵션은 입력 행을 계산에 화장실 알려줍니다.

그들은 함께 모든 파일을 계산합니다.


1
이 때문에의 마지막 줄 바꿈의 오프별로 하나의 오류를 처리하지 않는 find출력
RobertDeRose

디렉토리 만 계산하려면 '-type f'대신 '-type d'를 사용하십시오. : D
MevlütÖzdemir

1
파일이 없으면 결과는 다음과 같습니다.1
Dylanthepiguy

47

위의 답변은 이미 질문에 대답하지만 다음과 같이 인수없이 찾기를 사용하면 (검색을 수행하려는 폴더 제외) 추가합니다.

find . | wc -l

검색은 훨씬 더 빠르거나 거의 순식간에 이루어 지거나 적어도 나를 위해 수행됩니다. type 절은 각 이름에 대해 stat () 시스템 호출을 실행하여 유형을 확인해야하기 때문에 생략합니다.

이것은 파일 대신 파일 수와 폴더 수를 반환하는 차이가 있지만 적어도 필자는 파일을 복사하고 압축하는 데 많은 양의 파일이있는 폴더를 찾기 위해 주로 이것을 사용하기 때문에 충분합니다. 폴더 수를 계산하면 여전히 대부분의 파일이있는 폴더를 찾을 수 있습니다. 정밀도보다 속도가 더 필요합니다.


1
파일이 없으면 결과는 다음과 같습니다.1
Dylanthepiguy

25

파일의 경우 :

find -type f | wc -l

디렉토리의 경우 :

find -mindepth 1 -type d | wc -l

둘 다 현재 작업 디렉토리에서 작동합니다.


1
파일이 없으면 결과는 다음과 같습니다.1
Dylanthepiguy

8

bash 4 이상

shopt -s globstar
for file in **/*
do
  if [ -d "$file" ];then
    ((d++))
  elif [ -f "$file" ];then
     ((f++))
  fi
done
echo "number of files: $f"
echo "number of dirs: $d"

파일과 디렉토리를 검색하려면 find를 두 번 호출 할 필요가 없습니다.


8

당신이 dirs의 수를 원하는 경우 허용되는 답변에 약간의 업데이트

find $DIR -exec stat -c '%F' {} \; | sort | uniq -c | sort -rn

1
맥 / BSD : find $DIR -exec stat -f '%HT' {} \; | sort | uniq -c | sort -rn(여기서, 유형 %T, 따라서 일반 파일, 실행 파일 또는 폴더에 대한 슬래시 별표 비어 있습니다 %HT필요한, 또는 여분의 텍스트처럼, 계산되지 않는에서 공간을 피하기 위해 > %T. )
Arjan

10.13.6 mac에서 "찾기 : 불법 옵션-e"를 제공합니다.
K.-Michael Aye
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.