LS |示例 | xargs rm

LS |示例 | xargs rm

我想立即删除一组文件。

ls | egrep \^New

输出符合预期,

New 1
New 2
New 3

但继续管道

| xargs -L rm

尝试删除以空格分隔的输入:

rm: New: No such file or directory
rm: 1: No such file or directory

我缺少什么?

答案1

不解析ls.这应该可以解决问题:

rm New*

您的方法失败了,因为xargs默认情况下在空格上分割参数,因此它rmNew1、等上运行。您可以通过在换行符上分割来解决这个New问题2,但这不适用于包含换行符的文件名。

答案2

是的,你是对的,xargs就是在空格处分解文件名。如果您使用的是 GNU,xargs您可以使用该选项使用换行符作为分隔符-d。例子:

ls | egrep \^New | xargs -d '\n' rm

相关内容