Saya ingin menghapus file yang lebih besar dari 2MB dalam folder tertentu. Jadi saya berlari:
find . -size +2M
Dan saya mendapat daftar dua file
./a/b/c/file1
./a/f/g/file2
Jadi saya jalankan:
find . -size +2M -exec rm ;
dan saya mendapatkan pesan kesalahan Find: missing argument to -exec
Saya memeriksa sintaks di halaman manual dan dikatakan -exec command ;
Jadi alih-alih saya coba
find . -size +2M -exec rm {} +
Dan itu berhasil. Saya mengerti bahwa {} membuatnya mengeksekusi perintah seperti rm file1 file2
bukan rm file1; rm file2;
.
Jadi mengapa yang pertama tidak berhasil?
MENJAWAB:
Saya kira saya hanya perlu RTFM beberapa kali untuk akhirnya mengerti apa yang dikatakannya. Meskipun contoh pertama tidak menunjukkan {}, kurung diperlukan dalam semua kasus. Dan kemudian tambahkan \; atau + tergantung pada metode yang diinginkan. Jangan hanya membaca tajuknya. Baca deskripsi juga. Oke.
Demi efisiensi, Anda biasanya lebih baik menggunakan xargs:
sumber
Saya tidak akan menggunakan -exec sama sekali untuk ini. find juga dapat menghapus file itu sendiri:
(ini mungkin GNUism, tidak tahu apakah Anda akan menemukan ini di non-gnu find)
sumber
Seperti yang didokumentasikan, -exec membutuhkan {} sebagai pengganti untuk hasil dari find.
Panduan pasti untuk menggunakan alat bash dan GNU ada di sini
Seperti yang Anda lihat, itu secara eksplisit menunjukkan perintah kedua yang Anda gunakan sebagai contoh.
sumber