このコマンドを実行しています。
~/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;
の間にスペースがないことから、このコマンドは全く有効なコマンドではないことがわかります。
シンプルに
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.