Pertanyaan Temukan file dokumen dan salin ke direktori lain


Ini adalah sedikit pertanyaan dasar tetapi saya mencoba untuk menyalin semua file doc yang saya temukan di direktori dan menyalinnya ke direktori lain.

Saya tahu setiap perintah:

find -name '*.doc' .

dan:

cp filename location 

Bagaimana saya bisa menggabungkan dua perintah?


4
2017-11-07 20:49


asal




Jawaban:


temukan / path / ke / search -name "* .doc" -exec cp {} / path / to / copy / to \;

Jika ada banyak file .doc ini adalah pilihan terbaik Anda untuk menghindari memukul batas karakter.


4
2017-11-07 21:05



Atau secara setara, tetapi sedikit lebih cepat: find /path/to/search -name "*.doc" -exec cp -t /path/to/copy/to {} + - Gilles
@Gil, tidak setara, dan tidak kebal terhadap batas karakter. - John T
@John: Bagaimana mereka tidak setara? Adapun batas karakter, find -exec … {} +  aku s kebal terhadap itu (itu beroperasi seperti xargs tanpa masalah mengutip). - Gilles
@gil lihat lebih dekat pada halaman manual, atau, coba dengan beberapa ratus ribu file dalam jalur panjang yang sangat berlapis. - John T
@John: Tentang batas: mengutip POSIX: "Ukuran set apapun dari dua atau lebih nama path harus dibatasi sedemikian rupa sehingga pelaksanaan utilitas tidak menyebabkan batas {ARG_MAX} sistem menjadi terlampaui." Mengutip find (1) pada Debian lenny: "Baris perintah dibangun dalam banyak cara yang sama dengan xargs membangun baris perintahnya. ”. Dan saya baru saja menguji pada Debian Lenny, itu memecah nama file menjadi potongan dengan benar. Tentang kesetaraan: lagi, perbedaan apa yang Anda lihat? - Gilles


Kemungkinan lain:

find /path/to/search -name \*.doc -print0 | xargs -0 cp --target-directory=/destination/path

Ini mengurangi jumlah permintaan perintah salin bila dibandingkan dengan mencari -exec (seharusnya lebih cepat jika Anda memiliki sejumlah besar file)


3
2017-11-07 22:43



Pendekatan Slartibartfast memungkinkan Anda menggunakan filter pencarian / pencarian yang lebih canggih dengan alat pengindeksan dokumen recollq 'keyword1 OR keyword2 AND ext:doc' | xargs cp --target-directory=~/Photos/of\ Hobson - hobs


Pada solaris Anda dapat menggunakan yang berikut:

find /path/to/search -name "*.doc" -exec cp {} /destination/directory \;

1
2017-07-30 01:58





Temukan file yang dimiliki oleh pengguna kelly, dan salin ke katalog: /opt/dir

# cd (into /path to copy files) e.g. cd /opt/
# mkdir dir (where you want to copy the files)
# find / -user kelly -exec cp -rfp {} /opt/dir/ \;

1
2017-11-10 11:53





Untuk menggeneralisasi pertanyaan Anda dari ".doc" ke ".jpg" atau file gambar biner lainnya, Anda perlu alat sumber terbuka tambahan, seperti tagim dan rekol.

tagim akan menandai gambar Anda dengan kata-kata kunci (atau peringkat) dan kemudian Anda dapat mengurutkan / memfilternya menggunakan rekol dan alirkan daftar ke cp menggunakan xargs untuk menyambungkannya:

recollq 'ofJoe ext:jpg' | xargs cp --target-directory=~/Photos/ofJoe

0
2018-06-16 16:15