我对Linux的讨厌使用有点新意。我此刻正在玩流水线。任何人都可以告诉我为什么这不起作用:
ls | grep 2 | rm
(我试图删除名字中包含2的所有文件)
ls | grep 2
部分正在运行(它返回所有文件名,其中包含2个)
为什么我现在不能将这些名称传递给rm
以删除这些文件?
提前感谢你的帮助:)
答案 0 :(得分:2)
rm
期望文件名为 arguments ,而pipe将文件名发送到rm
的标准输入( stdin ) 。你可以这样做:
rm $(ls | grep 2)
删除文件。这样,文件名作为参数传递,而不是传递给rm
的标准输入。
我用你的命令来解释这个问题。一般来说,you shouldn't parse the result of ls
command.