如何在 du -sh 的输出中区分文件和目录

如何在 du -sh 的输出中区分文件和目录

输出结果du -sh * | sort -h按大小排序列出了所有文件和目录。但问题是,输出结果没有区分目录和文件。

例如:

15K file1backup
16K Desktop

du 有没有什么选项可以更容易地区分文件和目录?

答案1

使用 OP 的原始命令我能得到的最接近的结果是:

 ls -p | xargs -I{} du {} -sh | sort -h

..现在看来有效了。

答案2

man du提供转换方式来做到这一点? -

你能聪明一点吗?或许

du -s */ |sort -n将限制您进入子目录,不包括 $PWD 中的文件,并且您可以使用ls轻松地按大小对这些文件进行排序ls --group-directories-first -Ssh

或者使用完全不同的工具:ncdu

答案3

不,我读手册时说 du 不区分文件和目录。


你可以用类似这样的东西来区分自己

find  . -maxdepth 1 -type f -print0 | du -sh --files0-from -

对于文件和

 find  . -maxdepth 1 -type d -print0 | du -sh --files0-from -

用于目录。根据需要调整其他参数。

答案4

你真的应该试试手册。简单地做du -h只会执行你实际上必须执行的目录添加一个参数让它也能执行文件操作(-a)。你的命令执行文件操作的原因是因为*

如果您只希望对顶级目录进行排序,最简单的方法可能是:

du -h | grep -v '[^.]/' | sort -h

相关内容