`ls` 的工作与 `*` 相比如何?
How is `ls` work compare `*`?
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
指定多个文件时,输出将显示每个文件的总和,而 du -sh
将只显示当前目录的总和。
您可能会考虑像 du $(ls)
这样的东西将 ls
的输出作为参数实际传递给 du
。但这可能不是一个好主意,因为文件名可能非常丑陋(包含空格,甚至换行符等),du
只会因此而混淆。
考虑合并 find
和 du
。
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
指定多个文件时,输出将显示每个文件的总和,而 du -sh
将只显示当前目录的总和。
您可能会考虑像 du $(ls)
这样的东西将 ls
的输出作为参数实际传递给 du
。但这可能不是一个好主意,因为文件名可能非常丑陋(包含空格,甚至换行符等),du
只会因此而混淆。
考虑合并 find
和 du
。