我试图找到一个命令来显示大于 1 GB 的文件并按大小排序显示这些文件。我已尝试过find . -maxdepth 2 -type f -size +1G -print0 |xargs -0 du -h |sort -rh
,但由于某种原因,显示的文件大小不大于 1 GB。例如,这是在输出中1.0K ./<repo>/.git/info
答案1
至少有两个可能的原因:
也许你
find
什么也没打印。在这种情况下,xargs
运行du -h
相当于du -h .
.调查--no-run-if-empty
GNU 的选项xargs
。或者更好地习惯find … -exec …
而不是find … | xargs …
。像这样:find . -maxdepth 2 -type f -size +1G -exec du -h {} + | sort -rh
find -size
测试(几乎)什么du --apparent-size
显示,而du
没有此选项可能会非常不同意,特别是当文件稀疏时。该选项不可移植。
我认为在你的情况下,第一个原因是罪魁祸首。 Note./<repo>/.git/info
无法来自,find . -maxdepth 2 -type f
因为其深度为 3。这意味着du
在某个目录上递归操作。