`Mv` kullanarak boş olmayan dizinlerin üzerine yazmaya zorlama


17

(Sadece kopya değil) bir grup dosyaları / dizinleri bazıları hedef dizinde dosyaları / dizinleri ile isim çakışmaları olan farklı bir dizine taşımak istiyorum. Benim asıl amacım dosyaları taşımak, böylece üzerine boş olmayan dizini tolere edebilirsiniz.

Şu anda kullanıyorum mv ... destination, bazen

mv: `target 'hedefine / target / target'a taşınamıyor: Dizin boş değil

mv -f ... destinationBaşarısız denedim ve dosyaların orijinal konumlarından gitmelerini rsyncistediğim için uygun görünmüyor.

Bonus olarak, bir şekilde yeniden adlandırılması amaçlanan dosyaları yeniden adlandırmak suretiyle korumak için iyi bir çözüm var mı?


Ve mv komutunuzu denediğinizde hangi hatayı alıyorsunuz?
suspectus

Açıkça rsyncbunu istediğiniz şey olmadığını söylüyorsunuz ; bunu neden etiketledin rsync?
DopeGhoti

@DopeGhoti Uygun görünmediğini söyledim, ama başka türlü gösterilmeye hazırım.
user1227038

@suspectus Güncellenmiş soru.
user1227038

1
anahtar mv --backup=numberediçin kullanım veya diğer seçeneklerden birini kullanırsanız , birleştirmeyi tamamlar ve üzerine yazılması amaçlanan dosyaları korur--backupmv
bsd

Yanıtlar:


19

Eğer kullanırsanız mv --backup=numbered
(diğer seçeneklerin veya bir --backupşalter),
ardından mvbirleştirme işlemini tamamladıktan ve dosyalar üzerine yazılır olması amaçlanmıştır koruyacaktır.


aptal cevap - Bu, sürücünüzü .~1~klasörler ile kirletir
Araç Seti

0
#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
SRC=/path/to/source
DST=/path/to/destination

for item in $SRC/*; do
    if [[ -f "$DST/$(basename "$item")" ]]; then
        newitem=$(basename $item)_old
        while [[ -f "$DST/$newitem" ]]; do
            newitem=${newitem}_old
        done
        mv "$DST/$(basename $item)" "$DST/$newitem"
    fi
    mv "$item" "$DST/$(basename $item)"
done

1
Bu komut dosyası yerine doğrudan komutun cpardından çalıştırılabilir mv.
reza.safiyat

0

Sen kullanabilirsiniz mcekran içinde (Midnight Commander) ve klasörleri InsveF6

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.