"find: argumen yang hilang pada `-exec &" saat menggunakan "-exec rm -f {}\"

Saya menjalankan perintah ini:

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

saya mendapat keluaran di bawah ini:

> IMAG1806.jpg

Error:
find: missing argument to `-exec'

apa perintah yang tepat untuk menemukan file apa pun dari direktori saat ini dan menghapusnya dengan -exec?

Anda melewatkan tanda ; di bagian akhir (dan juga spasi di antara {} dan ;). Perintah yang benar adalah:

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

; menunjukkan akhir dari predikat -exec dari find.

Perhatikan juga bahwa kita telah menggunakan \;, yaitu \ di depan ; untuk menghindari interpretasi ; oleh shell, jika tidak, shell akan memperlakukan ; sebagai akhir dari keseluruhan perintah find dan find akan memberikan kesalahan yang sama. Anda juga bisa menggunakan ';' sebagai pengganti \;.

Anda menggunakan \ di akhir, ini mengindikasikan shell Anda akan terus mengambil input melalui PS2 (ditunjukkan dengan >), Anda mengetikkan IMAG1806.jpg lagi, sehingga seluruh perintah menjadi:

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

Seperti yang dapat Anda lihat, ini sama sekali bukan perintah yang valid dengan IMAG1806.jpg di bagian akhir, tidak ada penutup predikat -exec dan tanpa spasi di antara {} dan \;.

Komentar (1)

Anda dapat dengan mudah

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

Dari halaman manusianya:

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.
Komentar (0)