Sembolleri geride bırakarak dosyalar nasıl taşınır?


9

Simgeleri orijinal dizinde bırakarak dosyaları bir dizinden diğerine nasıl taşıyabilir / kopyalayabilirim . ln -sHedef içinde semboller oluşturur biliyorum , ama kaynak dizininde sembolik bırakmak ve gerçek dosyaları yenisine taşımak istiyorum. Bunu nasıl yapabilirim?


Bu sorunun en iyi yanıtı burada: unix.stackexchange.com/a/228166/7000
Sridhar Sarnobat

Yanıtlar:


4

Dosyaları ayrı ayrı işleyin, örn.

cd $original_directory  
for i in <files to process> ; do  
    mv ./$i $new_directory/  
    ln -s $new_directory/$i ./$i
done

veya kopyalanıyorsa, mvkomut satırını

    cp ./$i $new_directory/  
    rm ./$i   

1
Cp / rm sürümü - bunun olası faydaları nelerdir? Aynı şeyi çok daha yavaş yapıyor gibi görünüyor :)
Sergey

@Sergey Birinin çıkış durumunu kontrol edebilir cpve ancak başarılı olursa kaldırmaya devam edebilir.
lgarzo

@lgarzo: mvDosyayı silmeden önce kopyanın başarılı olup olmadığını kontrol etmemek değerli olurdu - ama bu ciddi bir hata olurdu mv:)
Sergey

"$ New_directory" ve "<işlenecek dosyalar>" "özel değişkenler" mi, burada komut dosyasını verdiğim son argüman her zaman "$ new_directory" olarak kabul edilir ve ilk argümanlar "<işlenecek dosyalar>" olarak kabul edilir mi ?. Bu, yazdığım diğer komut dosyaları için geçerli mi? Yoksa "$ 1" ve "$ 2" gibi boşlukları doldurmam gerektiğini mi ima ediyorsunuz? Soru için özür dilerim ama genel olarak kodlama konusunda çok yeniyim.
deox

1
Değiştirmek $original_directoryve $new_directory/ konumundan taşımak istediğiniz dizinleri değiştirin veya bu şekilde ayarlayın original_directory=/home/walt/from. Komut dosyalarında kullanmak için, bağımsız değişkenleri kendiniz ayrıştırmanız gerekir. Bkz yerleşik Getopts içinde man bash.
waltinator
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.