Bir klasördeki tüm içeriği başka bir klasörle nasıl değiştirebilirim?


23

Klasörlerim oldve new.

Ben tüm içeriğini değiştirmek istediğiniz old/*için new/*. Bu klasörlerde çok sayıda alt dizin olabilir.

Ama içinde olmayan new/*ancak içinde birkaç dosya olabilir old/*, bu yüzden oldukları gibi kalmasını istiyorum.

Bunu bir Linux kabuğundan nasıl yapabilirim?

Yanıtlar:


18

rsync muhtemelen burada daha iyi bir seçenek olacaktır. Rsync -a bir alt dizin / ./ kadar basit. daha iyi çözümler için bu unix.stackexchage cevabını kontrol edin

kullanmak -file cpkomuta

cp -fR /source/files /dest

"isteminin üzerine yazmak için cp'yi bastırın ..

Cp'nin diğer adını geçersiz kılmak için onu tırnak içine alabilirsiniz:

 'cp' -rf ./source/* /destination/

daha fazla bilgi için şu bağlantıları izleyin:

http://www.wallpaperama.com/forums/cp-command-problems-forcing-overwrite-using-cp-command-t5685.html

http://bytes.com/topic/unix/answers/865372-force-cp-overwrite-existing-directory


23

Kullanın rsync. Dizinleri bir yönde senkronize edecektir. Bu nedenle, oldklasörünüzü her şeyle güncellemek new, ancak orada ne varsa saklamak istiyorsanız, şunu kullanın:

rsync -avh --dry-run /path/to/new/ /path/to/old/

Bu, ilk etapta, aktarılacak dosyaların listesini çıkarır. Bu durumda: Zaten orada olmadıkça, bulunan her şey newkopyalanacaktır old. Her şey olduğu gibi oldkalır.

Size iyi geliyorsa, --dry-rungerçek olarak iletmek için argümanı kaldırın .

-avhBayraklar sadece arşiv (damgalarını koruyacak, vs.) modunu ayrıntı ve insanlar tarafından okunabilir dosya boyutları sağlar. --deleteBayrağı belirtmediğiniz sürece hiçbir şey hedeften silinmeyecektir . man rsyncDaha fazla bilgi için danışın .

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.