ls
的结果是*
之间的差异?例如: ls | du -sh
将仅显示当前目录总大小的一行。 du -sh *
将显示当前目录中每个文件或子目录的大小。
为什么结果不一样?
ls | du -sh
只报告.
的大小du
因为它不支持从标准输入读取目录名称。
因此,执行ls | du -sh
会浪费ls
,并给出与仅运行du -sh
相同的结果。
du -sh
不会从标准输入中读取。所以whatever | du -sh
和du -sh
一样.
但是,du -sh *
扩展到du -sh file1.txt file2.txt file3.txt
其中 file1.txt, ...是当前目录中的文件/目录。
当为du -sh
指定乘法文件时,输出将显示每个文件的 sum,而 du -sh
将仅显示当前目录的总和。
您可能会考虑将ls
的输出作为参数实际传递给du
du $(ls)
。 但这可能不是一个好主意,因为文件名可能很丑陋(包含空格,甚至是换行符等),du
只会对此感到困惑。
请考虑将find
和du
结合起来。