Unix: İki dizin nasıl birleştirilir


17

Diyelim ki çeşitli içeriğe sahip iki klasörüm var foove bar. Nasıl birleştirebilirsiniz bariçine fooböylece:

  • Dosyalar fooo değildir barbakir bulunmaktadır.
  • İçinde barolmayan dosyalar fooartık içeride foo.
  • İçindeki dosyalar fooda içindeki bardosyalar ile değiştirildi bar.

Yanıtlar:


25

Doğru ihtiyaçlarınızı okuyorsam, gitmek hiçbir dosya yok fooetmek bar. Bu sadece içeriğini kopyalayabilirsiniz benziyor bariçin foogerekli (varsayılan davranış) gibi üzerine yazma dosyaları icar.

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

Evet, belirsiz olduğum şey, özyinelemeydi ve nasıl foo / bar olarak foo içinde bar bulunmaması ile sonuçlanıyordu. Ama istediğim gibi görünüyor :)
Svish

1
Doğru, eğer yaptıysanız cp -R /path/to/bar /path/to/foo, bariçinde bir dizin yaratacaktır foo. İnce nokta.
coneslayer

1
Not: kabuk globbing'in nasıl çalıştığı nedeniyle gizli dosyaları / dizinleri bar(yani nokta ile başlayan isimlerle) atlar ..
Kamil Maciorowski

9

Birleştirme: Ben çok benzer bir ihtiyacı vardı bariçine fooama olan dosyalar bar olmamalı üzerine yazma eşleştirme dosyaları foo. Bu durumda:

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

1

Bunu dene :

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

Gönderen man cp
-u, --update hedef dosya eksik olduğunda KAYNAK dosya hedef dosya veya daha yeni yalnızca kopyalama
-R, -r, --recursive yinelemeli kopya dizinleri


1
İki kişi zaten cp komutunu önerdi ve cevabınız gereksiz görünüyor. Seçtiğiniz argümanların diğer önerilere göre nasıl daha iyi bir iş çıkardığını açıklamak için birkaç dakikanızı ayırmak, yanıtınızı daha yararlı hale getirmenize yardımcı olacaktır.
music2myHaz

1
-U bayrağı yalnızca kaynaktaki dosya hedef dosyadakinden daha yeniyse güncelleştirilir. Bkz: man cp -> -u, --update: yalnızca SOURCE dosyası hedef dosyadan daha yeni olduğunda veya hedef dosya eksik olduğunda
kopyalama

Kişilerin bu yararlı bilgiyi cevabın içinde görebilmesi için bu bilgiyi soruya ekleyin (yayınınızın hemen altındaki Düzenle'yi kullanın).
music2myHaz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.