디렉터리에 있는 파일 수와 결과 하위 디렉터리를 보여주기 위해 이와 유사한 출력을 원합니다. 출력은 다음과 유사할 수 있습니다.
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
%h
uniq
일치하는 파일의 디렉터리 이름을 인쇄하므로 나중에 폴더 이름이 반복되는 횟수를 계산하는 것이 간단합니다.
답변2
답변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
...