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 \;
.
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.