Bagaimana cara menyalin di bash semua direktori dan file secara rekursif?

143

Saya memiliki skrip:

find ./SourceFolder/ -maxdepth 4 -exec cp -R '{}' ./DestFolder/ \;

SourceDir berisi juga sub-folder.

Masalah itu DestFoldertidak hanya di semua pohon, tetapi di tingkat atas semua tingkat dan file lain.

Bagaimana cara memperbaiki ?

pengguna710818
sumber
Maaf, lupa menambahkan -name "* .txt"
user710818

Jawaban:

303
cp -r ./SourceFolder ./DestFolder
lanzz
sumber
8
Jadi, untuk memperjelas, opsi kapital -R akan menyalin direktori root lagi; opsi -r kecil menjaga jalur root tetap sama.
AnneTheAgile
8
@AnneTheAgile - dari pengujian saya barusan dan menurut halaman manual, -r dan -R tidak berbeda.
aaaaaa
@aaaaaa, ty! OS / versi mana yang Anda gunakan? Saya kemudian mengetahui bahwa perintah bash dapat sedikit berbeda di seluruh sistem operasi.
AnneTheAgile
2
cpbukan perintah bash tetapi dapat dijalankan secara terpisah, jadi ini khusus untuk sistem. Di sisi lain, perintah bash yang sebenarnya sama di seluruh sistem operasi.
lanzz
Saya harus menambahkan garis miring di akhir folder sumber saya. Tidak yakin kenapa. Saya juga menggunakan build vars. cp -r "$CONFIG_PATH/" "$CODESIGNING_FOLDER_PATH"
Marty
54

kode untuk salinan sederhana.

cp -r ./SourceFolder ./DestFolder

kode untuk salinan dengan hasil sukses

cp -rv ./SourceFolder ./DestFolder

kode untuk Forcefully jika sumber berisi file readonly apapun itu juga akan disalin

cp -rf ./SourceFolder ./DestFolder

untuk bantuan detail

cp --help
pengguna3708054
sumber