如何统计大小为4096的非空和空目录

如何统计大小为4096的非空和空目录

我想计算空目录和非空目录的数量。但所有空目录以及包含文件和子目录的目录的大小都相同 4096。因此,由于 4096 大小,空目录也算在非空目录中。并且空目录的计数为零。

答案1

如果您关心的只是空虚,这find似乎是最直接的工具。

find . -type d -empty将列出当前目录中的所有空文件夹。更改点以在其他地方搜索。

find . -maxdepth 1 -type d -empty将避免查看子目录。

最终目标是对它们进行计数,因此基于@alecxs 评论: find . -maxdepth 1 -type d -empty -printf '\n' | wc -l。这样做的优点是不会为每个目录分叉一个进程,因此速度应该更快,特别是在空目录数量很大的情况下。

答案2

我通常将 bash 的文件夹大小别名放入 (/root/).bashrc

alias ds='du --max-depth=1 -ch'

所以我不会每次都输入完整的内容。这将以人类可读的格式列出文件夹大小,即(4K、1M、2G),
因此您只需发出此命令并通过 grep 进行管道传输,如下所示:

ds |grep -c 4.0K

这将计算空目录或:

ds |grep -cv 4.0K

将计算非空目录

如果您不想使用别名,只需替换dsdu --max-depth=1 -ch
如果您想绝对精确,您可以跳过h并执行以下操作:

du --max-depth=1 -cb |grep -c "^4096"$'\t'

请注意,如果目录有 4096B 的目录大小也会显示符号链接内部或文件0B的大小,所以这将不是正确显示空目录计数,因此可能更好地将上述解决方案与 find 一起使用

我通常使用的另一个有用的东西是列出大目录(大于1G并对它们进行排序)

ds |grep "G"$'\t' |sort -n

这应该有帮助。

相关内容