OSX 上的 xargs:非法选项 --

OSX 上的 xargs:非法选项 --

我在 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 {} +

相关内容