The halaman pengguna (atau secara online pengguna GNU ) cukup banyak menjelaskan semuanya.
temukan perintah -exec {} \;
Untuk setiap hasil, command {}
dieksekusi. Semua kemunculan {}
diganti dengan nama file. ;
diawali dengan garis miring untuk mencegah shell menafsirkannya.
temukan -exec perintah {} +
Setiap hasil ditambahkan command
dan dieksekusi sesudahnya. Dengan mempertimbangkan batasan panjang perintah, saya rasa perintah ini dapat dieksekusi lebih banyak, dengan halaman manual mendukung saya:
jumlah total pemanggilan perintah akan jauh lebih sedikit daripada jumlah file yang cocok.
Perhatikan kutipan ini dari halaman manual:
Baris perintah dibuat dengan cara yang sama seperti xargs membangun baris perintahnya
Itulah mengapa tidak ada karakter yang diperbolehkan di antara {}
dan +
kecuali spasi. +
membuat find mendeteksi bahwa argumen harus ditambahkan ke perintah seperti xargs
.
Solusinya
Untungnya, implementasi GNU mv
dapat menerima direktori target sebagai argumen, dengan salah satu -t
atau parameter yang lebih panjang --target
. Penggunaannya adalah:
mv -t target file1 file2 ...
find
Perintah Anda menjadi:
find . -type f -iname '*.cpp' -exec mv -t ./test/ {} \+
Dari halaman manual:
perintah -exec;
Jalankan perintah; true jika status 0 dikembalikan. Semua argumen berikut untuk ditemukan dianggap argumen untuk perintah sampai argumen yang terdiri dari ';' ditemui. String `{} 'diganti dengan nama file saat ini yang sedang diproses di mana pun itu terjadi dalam argumen ke perintah, tidak hanya dalam argumen yang berdiri sendiri, seperti dalam beberapa versi find. Kedua konstruksi ini mungkin perlu di-escape (dengan `\ ') atau dikutip untuk melindunginya dari perluasan oleh shell. Lihat bagian CONTOH untuk contoh penggunaan opsi -exec. Perintah yang ditentukan dijalankan sekali untuk setiap file yang cocok. Perintah dijalankan di direktori awal. Ada masalah keamanan yang tak terhindarkan seputar penggunaan tindakan -exec; Anda harus menggunakan opsi -execdir sebagai gantinya.
-exec perintah {} +
Varian tindakan -exec ini menjalankan perintah yang ditentukan pada file yang dipilih, tetapi baris perintah dibuat dengan menambahkan setiap nama file yang dipilih di bagian akhir; jumlah total pemanggilan perintah akan jauh lebih sedikit daripada jumlah file yang cocok. Baris perintah dibuat dengan cara yang sama seperti xargs membangun baris perintahnya. Hanya satu kemunculan `{} 'yang diperbolehkan dalam perintah. Perintah dijalankan di direktori awal.