我想立即删除一组文件。
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
默认情况下在空格上分割参数,因此它rm
在New
、1
、等上运行。您可以通过在换行符上分割来解决这个New
问题2
,但这不适用于包含换行符的文件名。
答案2
是的,你是对的,xargs
就是在空格处分解文件名。如果您使用的是 GNU,xargs
您可以使用该选项使用换行符作为分隔符-d
。例子:
ls | egrep \^New | xargs -d '\n' rm