我想要一个与此类似的输出,以显示目录中包含多少个文件和最终的子目录。输出可能与此类似
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
...