GNU/Linux >> Belajar Linux >  >> Linux

Apakah mungkin untuk menyalurkan hasil FIND ke perintah COPY CP?

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 untuk find dan satu lagi untuk cp .

  • Alih-alih menggunakan exec() di dalam find akan menyelesaikan masalah dalam satu proses.


Pertanyaan bagus!

  1. 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/
  1. 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.

  1. 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 ...)

Linux
  1. Temukan versi WordPress dari baris perintah

  2. Cara mem-pipe hasil 'find' ke mv di Linux

  3. Menjelaskan perintah 'find -mtime'

  1. Temukan Waktu Eksekusi Perintah Atau Proses Di Linux

  2. Temukan proses apa yang ada di ujung lain pipa

  3. Apa sintaks find -exec yang benar

  1. Cara mengaudit izin dengan perintah find

  2. Perintah cp Linux

  3. Cara Menggunakan Perintah find Linux untuk Menemukan File