我在 OSX 上。我想对特定目录中的所有 png 运行 python 脚本。这是我尝试过的:
find docs/ -name "*png" | xargs --replace=F python myscript.py "F"
但我看到这个:
xargs: illegal option -- -
usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr]
[-L number] [-n number [-x]] [-P maxprocs] [-s size]
[utility [argument ...]]
我究竟做错了什么?
答案1
xargs
在 Mac OS X 上不支持该--replace
选项;你可以使用-I
:
find docs/ -name "*png" | xargs -I F python myscript.py "F"
产生奇怪的错误消息是因为此版本xargs
将单个字符后的字符解释-
为选项,因此--replace
它正在寻找名为 的选项-
,但该选项不存在。
答案2
Mac OSX xargs不支持长选项,例如GNU xargs。对于--replace
像 GNU xargs 这样的使用,请使用-I
:
find docs/ -name "*png" | xargs -I F python myscript.py "F"
请注意,此方法会因文件名包含换行符而中断,您要find -print0
与以下内容一起使用xargs -0
:
find docs/ -name "*png" -print0 | xargs -0 -I F python myscript.py "F"
或标准一:
find docs/ -name "*png" -exec python myscript.py {} +