"find: `-exec'" を使用するときに引数がありません。

このコマンドを実行しています。

~/shell_temp$ find . -type f -name "IMAG1806.jpg" -exec rm -f {}\

を実行したところ、以下のような出力が得られました。

> IMAG1806.jpg

Error:
find: missing argument to `-exec'

カレントディレクトリから任意のファイルを検索し、-execで削除するための正確なコマンドは何ですか?

最後の ; を見逃しています({}; の間にもスペースがあります)。正しいコマンドは

find . -type f -name "IMAG1806.jpg" -exec rm -f {} \;

find-exec 述語の終わりを表します。

そうしないと、シェルは ;find コマンド全体の終わりとして扱い、find は同じエラーを投げることになります。また、';'の代わりに ' を使用することもできます。

あなたは最後に `を使っていますが、これはシェルがPS2(>で示される) を通して入力を受け続けることを示しています。あなたが再びIMAG1806.jpg` とタイプしたので、コマンド全体は次のようになります。

find . -type f -name "IMAG1806.jpg" -exec rm -f {}IMAG1806.jpg

IMAG1806.jpgが最後にあり、exec述語が閉じておらず、{}と ``command; の間にスペースがないことから、このコマンドは全く有効なコマンドではないことがわかります。

解説 (1)

シンプルに

find . -type f -name 'IMAGE1806.jpg' -delete

man ページから。

Delete files; true if removal succeeded.  If the removal failed,
an  error message is issued.  If -delete fails, find's exit sta‐
tus will be nonzero (when it eventually exits).  Use of  -delete
automatically turns on the -depth option.
解説 (0)