Saat saya gunakan
cp -R inputFolder outputFolder
hasilnya tergantung pada konteks :
- jika
outputFolder
tidak ada, itu akan dibuat, dan jalur folder yang dikloning akanoutputFolder
. - jika
outputFolder
ada, 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 outputFolder
membuat 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
cp
untuk menjadi portabel (mis. MINGW tidakrsync
mengirim) - Saya memeriksa
cp -R --parents
tetapi ini membuat ulang jalan sampai pohon direktori (jadi klon tidak akanoutputFolder
tetapisome/path/outputFolder
) --remove-destination
atau--update
dalam 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 tar
perintah adalah cara yang andal dan bagus untuk menyalin pohon.
rsync
dikirim.
tar -C input -cf - . | tar -C output -xf -
berfungsi. -C
mengubah 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.
mv
memindahkan kumpulan file menjadi satu file biasa?