cp -r tanpa file tersembunyi

90

Saya memiliki dua direktori dan satu kosong.

Direktori pertama memiliki banyak sub direktori dengan file tersembunyi. Ketika saya cp -rkonten dari direktori pertama ke yang kedua, file tersembunyi akan disalin juga. Ada solusi untuk menghindarinya?

Rahul
sumber
itu bisa dilakukan, tapi menghapusnya setelah salinan mungkin lebih sederhana
Karoly Horvath
6
ya, tetapi menangani file tersembunyi ke lokasi lain adalah bahaya keamanan dalam kasus saya.
Rahul

Jawaban:

129

Anda dapat menggunakan rsync:

rsync -av --exclude=".*" src dest
Eugene Yarmash
sumber
1
Adakah overhead jika dibandingkan dengan cp?
Rahul
2
@Rahul Tidak terpikir oleh saya untuk melakukan benchmark, tapi saya pikir Anda tidak perlu khawatir tentang itu
Eugene Yarmash
3
Ini bekerja dengan baik! Terima kasih sobat! Sekadar informasi, rsync akan lebih bagus jika ukuran file besar, tetapi sama dengan cp jika file lebih kecil.
Rahul
28

Anda dapat melakukan

cp -r SRC_DIR/* DEST_DIR

untuk mengecualikan semua .files dan .dirs di tingkat SRC_DIR, tetapi tetap akan menyalin file tersembunyi apa pun di tingkat sub-direktori berikutnya.

Tuxdude
sumber
6
Itulah masalahnya .. :)
Rahul
9
Tetapi ini berfungsi untuk GIT-Repos, jika Anda tidak ingin menyalin seluruh GIT-Index di .git / ...
Sedat Kilinc
1
Saya memberi jawaban ini karena ini adalah solusi yang saya cari. Saya tidak ingin mengecualikan semua yang tak terlihat di pohon, hanya yang tak terlihat di tingkat akar!
l008com
Varian lain cp SOURCE/[!.]* TARGET.
Carel
4

rsync memiliki opsi "-C"

http://rsync.samba.org/ftp/rsync/rsync.html

Contoh:

rsync -vazC  dir1 dir2
slitvinov
sumber
Kamu benar. Saya mencoba mkdir -p dir1 / subdir; sentuh dir1 / subdir / .cvs; rsync -avzC dir1 dir2
slitvinov
rsync -av --exclude = ". *" src dest berfungsi dengan baik. Lihat jawaban di atas oleh eugene. Terima kasih! :)
Rahul