Saat saya gunakan
cp -R inputFolder outputFolder
hasilnya tergantung pada konteks :
- jika
outputFoldertidak ada, itu akan dibuat, dan jalur folder yang dikloning akanoutputFolder. - jika
outputFolderada, maka klon yang dibuat akan menjadioutputFolder/inputFolder
Ini mengerikan , karena saya ingin membuat beberapa skrip instalasi, dan jika pengguna menjalankannya dua kali secara tidak sengaja, ia akan outputFoldermembuat yang pertama kali, maka pada proses kedua semua hal akan dibuat sekali lagi di Windows outputFolder/inputFolder.
- Saya ingin selalu perilaku pertama: buat klon di sebelah yang asli (sebagai saudara kandung).
- Saya ingin menggunakan
cpuntuk menjadi portabel (mis. MINGW tidakrsyncmengirim) - Saya memeriksa
cp -R --parentstetapi ini membuat ulang jalan sampai pohon direktori (jadi klon tidak akanoutputFoldertetapisome/path/outputFolder) --remove-destinationatau--updatedalam kasus 2 tidak mengubah apa pun, masih ada hal-hal yang disalinoutputFolder/inputFolder
Apakah ada cara untuk melakukan ini tanpa terlebih dahulu memeriksa keberadaan outputFolder(jika folder tidak ada maka ...) atau menggunakan rm -rf outputFolder?
Apa cara UNIX portabel yang disetujui untuk melakukan itu?
rsync?
cp, perpipaan di antara dua tarperintah adalah cara yang andal dan bagus untuk menyalin pohon.
rsyncdikirim.
tar -C input -cf - . | tar -C output -xf -berfungsi. -Cmengubah direktori kerja, tetapi ini bukan opsi standar, jadi jika itu tidak didukung, Anda perlu menjalankan dua ter di direktori kerja yang benar untuk memulai, misalnya. ( cd input && tar -cf - . ) | ( cd output && tar -xf - )Namun jika Anda berurusan dengan Windows, saya hanya akan menggunakan jawaban roaima.
mvmemindahkan kumpulan file menjadi satu file biasa?