Unix: Cara menggabungkan dua direktori


17

Katakanlah saya punya dua folder dengan berbagai konten, foodan bar. Bagaimana saya bisa bergabung barke dalam foosehingga:

  • File dalam fooyang tidak dalam bartidak tersentuh.
  • File dalam baryang tidak fooada sekarang dalam foo.
  • File dalam fooyang juga bartelah digantikan oleh file dari bar.

Jawaban:


25

Jika saya membaca kebutuhan Anda dengan benar, tidak ada file yang pergi dari fooke bar. Sepertinya Anda hanya dapat menyalin isi baruntuk foo, membiarkannya file menimpa yang diperlukan (perilaku default).

$ cp -R /path/to/bar/* /path/to/foo

Ya, apa yang saya tidak yakin tentang kekambuhan dan bagaimana tidak berakhir dengan hanya memiliki bar di dalam foo sebagai foo / bar. Tapi ini sepertinya yang saya inginkan :)
Svish

1
Benar, jika Anda baru saja melakukannya cp -R /path/to/bar /path/to/fooakan membuat direktori bardi dalamnya foo. Titik halus.
pemain coneslayer

1
Catatan: ini akan menghilangkan file / direktori tersembunyi bar(yaitu dengan nama yang dimulai dengan titik - .) karena cara kerja shell globbing.
Kamil Maciorowski

9

Saya memiliki kebutuhan yang sangat mirip: gabungkan barke dalam footetapi file yang ada di dalamnya tidak bar boleh menimpa file yang cocok di foo. Pada kasus ini:

$ cp -R -n /path/to/bar/* /path/to/foo/

1

Coba ini :

$ cp -r-u-v /path/to/foo/* /path/to/bar/

Dari man cp
-u, --perbarui salin hanya ketika file SOURCE lebih baru dari file tujuan atau ketika file tujuan hilang
-R, -r, - direktori salin rekursif secara rekursif


1
Dua orang telah menyarankan perintah cp dan jawaban Anda tampaknya berlebihan. Meluangkan beberapa menit untuk menjelaskan bagaimana argumen yang Anda pilih melakukan pekerjaan yang lebih baik daripada saran lain akan membantu membuat jawaban Anda lebih bermanfaat.
music2myear

1
Bendera -u memperbarui hanya jika file di sumber lebih baru dari yang ada di tujuan. Lihat: man cp -> -u, --update: salin hanya ketika file SOURCE lebih baru daripada file tujuan atau ketika file tujuan hilang
drew7721

Tambahkan informasi itu ke pertanyaan (gunakan Edit tepat di bawah posting Anda) sehingga orang dapat melihat informasi yang bermanfaat dalam jawaban itu sendiri.
music2myear
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.