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