Pada baris perintah Linux, saya ingin menyalin satu set .txt
file (sangat besar) dari satu direktori (dan subdirektori) ke direktori lain.
Saya perlu struktur direktori untuk tetap utuh, dan saya perlu mengabaikan file kecuali yang berakhiran .txt
.
Jawaban:
Anda dapat menggunakan find dan cpio untuk melakukan ini
sumber
sumber
.
setelahfind
. Juga pada macOS 10.13.1, ini bekerja:find . -type f -name "*.txt" -exec install -v {} /dest/path/{} \;
Pendekatan lain
find . -name '*.txt' -exec rsync -R {} path/to/dext \;
sumber
find . -iname '*.txt' -exec rsync -Rptgon {} path/to/dext \;
melakukan pencocokan kasus yang sensitif dan untuk menjaga kepemilikan dan izin.Cara termudah yang bekerja untuk saya:
satu tangkapan adalah Anda harus menavigasi ke direktori "yang diinginkan" sebelum sehingga "jalur induk" sudah benar.
Pastikan juga Anda mengaktifkan gumpalan rekursif di bash:
sumber
bagaimana kalau Anda pertama menyalinnya
lalu pergi ke folder baru dan jalankan
atau hanya
Sunting: ok Anda ingin satu perintah yang menyaring (Saya belum menguji ini karena sistem saya tidak memiliki
cpio
perintah!). Di sinilah saya menemukannya: http://www.gnu.org/software/findutils/manual/html_mono/find.html#Copying-A-Subset-of-FilesSilakan uji ini dulu, karena saya belum mencobanya. Jika seseorang memverifikasi, itu akan bagus.
sumber
0
di-pmd0
dan menambahkan-print0
ke akhirfind
perintah (sebelum|
).Saya mencoba melakukan hal yang sama pada macOS, tetapi tidak ada opsi yang bekerja untuk saya. Sampai aku ketemu
ditto
.Saya harus menyalin banyak file .wav, dan melewatkannya file Video ... Jadi inilah yang saya buat:
find . -type f -iname "*.wav" -ls -exec ditto {} /destination/folder/{} \;
find .
- Berjalan menemukan di folder saat ini. pastikan Andacd /source/folder
sebelum memulai-type f
- Menentukan hanya mencari file-iname "*.wav"
- Ini memberitahukannya untuk mencari case case * .wav yang tidak sensitif-ls
- Ini menunjukkan kepada Anda file yang sedang dikerjakannya. Selain itu tidak menunjukkan apa-apa.-exec ditto {} /destination/folder/{} \;
- Melakukan semua pekerjaan menyalin dan membuat file dengan pohon direktori yang sama.sumber
Arahkan ke direktori:
Ini sedikit lebih lurus ke depan dan perkasa, jika Anda mengelola ekspresi reguler.
sumber
Arahkan ke direktori:
Anda harus menavigasi ke setiap folder di direktori, tetapi ini lebih baik daripada sebagian besar opsi yang saya lihat sejauh ini.
sumber