Macos 用xargs摆脱撇号?

Macos 用xargs摆脱撇号?,macos,shell,xargs,Macos,Shell,Xargs,我试图在一堆文件上运行一个命令: find . -name "*.ext" | xargs -0 cmd 上面的方法可以工作,但它挂起了,因为其中一个文件夹的文件名中愚蠢地有一个“,(其他文件夹有paren和其他废话) 如何安全地将转义输出发送到命令?e、 g: cmd foo\ bar\(baz\)\'\! [编辑]我知道我可以运行查找-exec cmd{}\但是我运行的实际命令更复杂,首先通过管道传输sed如果您有GNUfind,您可以使用-print0选项 find -name "*.

我试图在一堆文件上运行一个命令:

find . -name "*.ext" | xargs -0 cmd
上面的方法可以工作,但它挂起了,因为其中一个文件夹的文件名中愚蠢地有一个“,(其他文件夹有paren和其他废话)

如何安全地将转义输出发送到命令?e、 g:

cmd foo\ bar\(baz\)\'\!

[编辑]我知道我可以运行
查找-exec cmd{}\
但是我运行的实际命令更复杂,首先通过管道传输
sed
如果您有GNU
find
,您可以使用
-print0
选项

find -name "*.ext" -print0 | xargs -0 cmd
否则,您将不得不放弃
xargs
。如果你有Bash,你可以使用

find -name "*.ext" | while read -a list ; do cmd "${list[@]}" ; done

请注意,您不必指定当前目录作为起点。如果未指定起始,则假定为

您可以在
循环过程中使用此
来处理
查找
命令的结果,该命令使用
NUL
终止符,使用:

而IFS=read-rd“”文件;做
#回显“$file”
指令

donexargs
处理“,”和空间的方式:

find . -name "*.ext" | parallel cmd

-print0
只列出每个文件的一个巨大字符串(OSX)2号我得到了一个坏选项:-a
@MarkKahn
-a
是bash builtin
read
识别的选项。我只能假设您使用的是另一个shell。@MarkKahn
-print0
打印一个NUL分隔文件名列表,而
xargs-0
期望这样做,所以它不是不正确或意外的你观察到的行为。@anubhava-我特别说过我不能那样做;)@anubhava-是的
find . -name "*.ext" | parallel cmd