免責事項:私はUnix / Linuxに初めて触れていますが、学ぶことを楽しみにしています!私はこのstackexchangeで検索を試して読みましたが、man find
これを理解できないようです。
find ... -exec {} +
このコマンドを使用して、特定のファイル拡張子を持つすべてのファイルを再帰的に見つけ、ファイルリストからコマンドを実行したいと思います。約100,000個のファイルを変換する必要があります。私が実行しているコマンドはファイル名(またはファイル名のリストなどf1 f2 f3
)を引数として受け入れますが、コマンドを実行するには追加の引数も指定する必要があります。
私が今まで試したこと:
これは働きます:
find . -iname "*.extension" -exec <command> {} <additional parameters> \;
これはうまくいかないようです:
find . -iname "*.extension" -exec <command> {} <additional parameters> +
エラーメッセージが表示されますfind: missing argument to '-exec'
。{}
?後に他のパラメータを指定できないと思います。
いくつかの注意:
-o <outputDir>
このコマンドは、ファイル名を最初のパラメータとして使用し、出力ディレクトリやファイルから抽出する変数など、いくつかの追加パラメータを指定する必要があります-v <var1,var2,...>
。
違いがある場合は、Ubuntu 12.04の端末でこれを実行しています。
ベストアンサー1
find . -iname "*.extension" -exec sh -c '
exec <command> "$@" <additional parameters>' sh {} +
バラより"find...-exec sh -c '...' sh {}+" を使用した find コマンドはどのように機能しますか?もっと学ぶ。