微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 为什么du或echo pipelining不起作用?

我正在尝试对当前目录中的每个目录使用du命令.所以我试图使用这样的代码
ls | du -sb

但它没有按预期工作.它仅输出当前’.’的大小.目录,那就是全部.
回声同样如此

ls | echo

输出空行.为什么会这样?

解决方法

使用管道将第一个命令的输出(stdout)发送到子进程的stdin(输入)(第二个命令).您提到的命令不会对stdin进行任何输入.例如,这可以用于cat(并且通过工作,我的意思是像没有参数的cat一样运行,只是传递你给它的输入):
ls | cat

对于您的应用程序,这是xargs的用武之地.它接受管道输入并将其作为指定命令的参数.所以,你可以让它像:

ls | xargs du -sb

请注意,认情况下,xargs将在空格中断开其输入,因此如果您的文件名包含空格,则无法按您的意愿工作.所以,在这种特殊情况下,这会更好:

du -sb *

原文地址:https://www.jb51.cc/linux/394080.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐