리눅스: 디렉토리에 파일이 몇 개 있나요? [폐쇄]

리눅스: 디렉토리에 파일이 몇 개 있나요? [폐쇄]

디렉터리에 있는 파일 수와 결과 하위 디렉터리를 보여주기 위해 이와 유사한 출력을 원합니다. 출력은 다음과 유사할 수 있습니다.

dir1 100
dir2/dir3 240
dir3 12
dir5 44
...

어떤 애플리케이션, 스크립트가 이 작업을 수행할 수 있나요?

답변1

GNU find가 있으면 다음을 수행할 수 있습니다.

find /path/to/directory -type f -printf "%h\n" | uniq -c

예를 들어:

$ find /etc/skel /etc/profile.d /etc/resolvconf -type f -printf "%h\n" | uniq -c 
     10 /etc/profile.d
      1 /etc/resolvconf
      2 /etc/resolvconf/resolv.conf.d
      1 /etc/resolvconf/update.d
      1 /etc/resolvconf/update-libc.d
      6 /etc/skel

%huniq일치하는 파일의 디렉터리 이름을 인쇄하므로 나중에 폴더 이름이 반복되는 횟수를 계산하는 것이 간단합니다.

답변2

해결책을 찾았습니다

du -a | cut -d/ -f2 | sort | uniq -c | sort -nr

따라서장소

출력은 다음과 같습니다

 31 dir2
  2 dir3
  1 dir4    

답변3

이것은 에서 시작하는 디렉토리의 파일 수를 계산합니다 .. find필요한 경우 첫 번째 경로의 시작 경로를 제공할 수 있습니다.

find -type d -exec bash -c 'printf "%s %d\n" "{}" $(find "{}" -maxdepth 1 -type f | wc -l)' \;

.이는 디렉토리 트리( 제공할 수 있는 명시적 경로 에서 또는 명시적 경로에서)로 이동 하고 bash -c '...'각 디렉토리에 대한 코드 조각을 호출하여 작동합니다. 이 코드 조각은 디렉터리 경로 이름과 여기에 포함된 파일 수를 인쇄합니다.

다음은 샘플 출력입니다./etc

/etc 27
/etc/alternatives 1
/etc/bash_completion.d 6
/etc/dbus-1 2
/etc/defaults 0
/etc/defaults/etc 16
/etc/defaults/etc/freetds 3
/etc/defaults/etc/inetd.d 1
/etc/defaults/etc/my.cnf.d 4
/etc/defaults/etc/pki 0
/etc/defaults/etc/pki/ca-trust 1
/etc/defaults/etc/profile.d 5
...

관련 정보