私は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 ...]]
何が悪いのですか?
xargs
on Mac OS X は--replace
オプションをサポートしていません。代わりに-I
を使用できます。
find docs/ -name "*png" | xargs -I F python myscript.py "F"
このバージョンのxargs
は、単一の-
の後の文字をオプションとして解釈するため、奇妙なエラーメッセージが生成されます。したがって、--replace
では、存在しない-
という名前のオプションを探します。
Mac OSX xargs は GNU xargs のような長いオプションをサポートしていません。 GNU xargsのように--replace
を使用するには、-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 {} +