Linux 显示目录中大于 1 GB 的文件并显示大小

gri*_*ove 2 command-line find disk-usage

我试图找到一个命令来显示大于 1 GB 的文件并显示按大小排序的文件。我已经尝试过,find . -maxdepth 2 -type f -size +1G -print0 |xargs -0 du -h |sort -rh但出于某种原因,这会显示大小不超过 1 GB 的文件。例如,这是在输出中1.0K ./<repo>/.git/info

Kam*_*ski 7

至少有两个可能的原因:

  1. 也许你find什么也没打印。在这种情况下,xargs运行du -h相当于du -h .. 调查--no-run-if-emptyGNU 的选项xargs。或者更好地习惯find … -exec …而不是find … | xargs …. 像这样:

    find . -maxdepth 2 -type f -size +1G -exec du -h {} + | sort -rh
    
    Run Code Online (Sandbox Code Playgroud)
  2. find -size测试(几乎)du --apparent-size显示的内容,而du没有此选项可能会非常不同意,尤其是当文件稀疏时。该选项不可移植。

我认为在你的情况下,第一个原因是罪魁祸首。注意./<repo>/.git/info不能来自,find . -maxdepth 2 -type f因为它的深度是 3。这意味着du在某个目录上递归操作。