2014-04-15 180 views
2

我要从名称中包含“2”的目录中删除所有文件。 此命令工作做好管道rm命令

ls | grep [*2*] 

,但是当我从命令的输出试着管rm命令

ls | grep [*2*] | rm 

有错误“尝试`RM --help”以获取更多信息。”

请帮助

+1

'rm'不会从stdin读取文件名;它们被作为命令行参数给出。 –

回答

0

管道输出从另一个命令RM必须使用xargs的commant为RM 试试这个

ls | grep [*2*] | xargs rm 

输出将发送类似rm命令的参数

+0

通过我的计数,你已经实例化了4个进程,而你可以在1中做到这一点? –

2

为什么不直接使用wildcarding in the shell

例如

$ rm *2* 

我不认为你需要的lsgrep。您的上述问题源于您将输出管道输入到rm的标准输入中,而您想要提供命令行参数rmrm不会从标准输入读取。

1

您需要将每一行以rm命令的形式作为输入。为此,你需要xargs和管道。

修改命令就像ls -1 | grep [*2*] | xargs rm -rf