"find -exec {} +"の使用に問題があります。

免責事項:私は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 コマンドはどのように機能しますか?もっと学ぶ。

おすすめ記事