我对 Linux 的使用有点陌生。我现在正在玩流水线。谁能告诉我为什么这不起作用:
ls | grep 2 | rm
(我试图删除名称中包含 2 的所有文件)
ls | grep 2
部分正在运行(它返回所有带有 2 的文件名)
为什么我现在不能将这些名称通过管道传输到 rm
以删除这些文件?
提前感谢你的四个帮助:)
最佳答案
rm
期望文件名作为参数 而pipe将文件名发送到 rm
的标准输入 (stdin)。你可以改为:
rm $(ls | grep 2)
删除文件。通过这种方式,文件名作为参数传递,而不是传递给 rm
的标准输入。
我已经用你的命令来解释问题了。一般来说,you shouldn't parse the result of ls
command.
关于Linux命令流水线理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22816357/