Ada opsi yang jarang digunakan untuk cp
:-t destination
-- lihat halaman manual:
find . -iname "*.SomeExt" | xargs cp -t Directory
Anda dapat menggunakan |
seperti di bawah ini:
find . -iname "*.SomeExt" | while read line
do
cp $line DestDir/
done
Menjawab pertanyaan Anda:
-
|
dapat digunakan untuk mengatasi masalah ini. Tapi seperti yang terlihat di atas, ini melibatkan banyak kode. Apalagi|
akan membuat dua proses - satu untukfind
dan satu lagi untukcp
. -
Alih-alih menggunakan
exec()
di dalamfind
akan menyelesaikan masalah dalam satu proses.
Pertanyaan bagus!
- mengapa Anda tidak bisa menggunakan | pipa? bukankah itu gunanya?
Anda dapat mem-pipe, tentu saja, xargs
dilakukan untuk kasus ini:
find . -iname "*.SomeExt" | xargs cp Destination_Directory/
- Mengapa semua orang merekomendasikan -exec
-exec
bagus karena memberikan lebih banyak kontrol atas apa yang Anda jalankan. Setiap kali Anda mem-pipe, mungkin ada masalah dengan kasus sudut:nama file yang mengandung spasi atau baris baru, dll.
- bagaimana saya tahu kapan harus menggunakan itu (exec) melalui pipa | ?
Ini benar-benar terserah Anda dan ada banyak kasus. Saya akan menggunakan -exec
setiap kali tindakan untuk melakukan sederhana. Saya bukan teman baik xargs
, saya cenderung memilih pendekatan find
output disediakan untuk while
lingkaran, seperti:
while IFS= read -r result
do
# do things with "$result"
done < <(find ...)