我正在尝试对当前目录中的每个目录使用 du 命令。所以我尝试使用这样的代码:
ls | du -sb
但它没有按预期工作。它仅输出当前“.”的大小目录仅此而已。
echo 也是同样的情况
ls | echo
输出空行。为什么会发生这种情况?
使用管道发送输出(stdout) 第一个命令的stdin子进程(第二个命令)的(输入)。您提到的命令不接受任何输入stdin
。例如,这将适用于cat
(我所说的工作,是指像这样的工作cat
不带参数运行,只需传递您提供的输入即可):
ls | cat
对于您的应用程序,这就是xargs
它接受管道输入并将其作为指定命令的参数。所以,你可以让它像这样工作:
ls | xargs du -sb
请注意,默认情况下xargs
将破坏其在空格上的输入,因此如果您的文件名包含空格,则这将无法按您想要的方式工作。因此,在这种特殊情况下,这样会更好:
du -sb *
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)