私は正確に何を知りたい{} \;
と{} \+
して| xargs ...
ください。これらを説明で明確にしてください。
以下の3つのコマンドは同じ結果を実行して出力しますが、最初のコマンドは少し時間がかかり、形式も少し異なります。
find . -type f -exec file {} \;
find . -type f -exec file {} \+
find . -type f | xargs file
それは、最初のコマンドがコマンドfile
から来るすべてのファイルに対してコマンドを実行するためですfind
。したがって、基本的には次のように実行されます。
file file1.txt
file file2.txt
しかし、後者の2つのfind -exec
コマンドは、以下のようなすべてのファイルに対してfile commandを1回実行します。
file file1.txt file2.txt
次に、次のコマンドを実行します。最初のコマンドは問題なく実行されますが、2番目のコマンドはエラーメッセージを表示します。
find . -type f -iname '*.cpp' -exec mv {} ./test/ \;
find . -type f -iname '*.cpp' -exec mv {} ./test/ \+ #gives error:find: missing argument to `-exec'
コマンドを使用すると{} \+
、エラーメッセージが表示されます
find: missing argument to `-exec'
何故ですか?誰かが私が間違っていることを説明できますか?