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
如果您有GNUfind
,您可以使用-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 builtinread
识别的选项。我只能假设您使用的是另一个shell。@MarkKahn-print0
打印一个NUL分隔文件名列表,而xargs-0
期望这样做,所以它不是不正确或意外的你观察到的行为。@anubhava-我特别说过我不能那样做;)@anubhava-是的
find . -name "*.ext" | parallel cmd