linux:目录中有多少个文件?

linux:目录中有多少个文件?

我想要一个与此类似的输出,以显示目录中包含多少个文件和最终的子目录。输出可能与此类似

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
...

相关内容