Saya memiliki struktur direktori berikut:
Main_Dir
|
-----------------------------------
Subdir1 Subdir2 Subdir3
| | |
--------- --------- ---------
| | | | | | | | |
fo1 fo2 f03 fo1 fo2 f03 fo1 fo2 f03
Saya ingin menyalin semua subdirektori ( Subdir1
, Subdir2
, Subdir3
) ke folder baru. Tapi saya hanya ingin menyalin fo1
dan fo2
folder di tempat baru.
Tidak yakin bagaimana itu bisa dilakukan.
Jawaban:
Jika pohon direktori lebih dari sekedar
..../f03
Anda dapat menggunakanrsync
perintah ini untuk menyalin setiapfo1
&fo2
dan mengecualikan setiap direktori lain dengan namafo*
.Ketika berhadapan dengan jenis-jenis skenario penyalinan ini, saya selalu menggunakan
rsync
dan ini--dry-run
&--verbose
beralih sehingga saya bisa melihat apa yang akan dilakukan tanpa benar-benar harus menyalin file.Contoh
Lari kering.
Jika Anda ingin melihat beberapa
rsync
logika internal tentang apa yang dimasukkan / dikecualikan, gunakan--verbose
saklar.Jika Anda perlu mengecualikan bentuk direktori lain, Anda dapat menambahkan beberapa pengecualian.
sumber
Gunakan
rsync
:sumber
Anda dapat mencoba sesuatu seperti ini:
The
find
perintah mengembalikan semua subdirektori langsung Main_Dir.basename
akan mengembalikan nama subdirektori yang ditemukan (mis.basename Main_Dir/Subdir1
pengembalianSubdir1
). Anda kemudian menggunakan ekspansi brace shell untuk menghindari mengetikfo1
danfo2
beberapa kali dan menyalinnya kenew_dir/$(basename $subdir)
direktori yang baru dibuat .Dalam kasus tertentu Anda menyebutkan di mana hanya ada direktori di bawah
Main_Dir
dan di mana tidak ada spasi atau karakter aneh dalam nama, Anda dapat menyederhanakan di atas untuksumber
Jika struktur direktori Anda persis seperti dalam contoh Anda (yaitu semua
fo
file berada pada level yang sama):sumber