Linux find 命令 - 如何按大小查找目录?

Linux find 命令 - 如何按大小查找目录?

可以find根据目录的大小返回结果吗?
下面的命令按预期工作正常 -

find * -type f -size +10M -exec ls -hlSr {} \+

但将相同的内容应用于目录时,它不会返回任何结果

find * -type d -size +10M -exec ls -hlSr {} \+   //no output

所以想知道上面的一些变化是否可能。

我知道du可以像这样使用 -->du -hs * | sort -h来实现所需的输出,但我更感兴趣的是了解find限制和使用场景。

答案1

这是预期的。

find -size仅检查 inode 大小(请记住,目录也只是“文件”),而不检查目录内容。对于目录来说,永远不会超过 10M,因此结果find只是空的。

索引节点大小与运行时获得的大小相同stat

$ du -s dir
61943836851 dir

$ stat -c %s dir
53248

所以单独使用是不可能的find
但您当然可以find . -type d -exec du -hs {} +使用find的过滤选项。


进一步阅读:

相关内容