`Mv` का उपयोग करके गैर-खाली निर्देशिकाओं को अधिलेखित करने के लिए कैसे बाध्य करें


17

मैं एक अलग निर्देशिका में फ़ाइलों / निर्देशिकाओं के एक समूह (सिर्फ कॉपी नहीं) को स्थानांतरित करना चाहता हूं, जिनमें से कुछ में लक्ष्य निर्देशिका में फ़ाइलों / निर्देशिकाओं के साथ नाम संघर्ष है। मेरा मुख्य उद्देश्य फाइलों को स्थानांतरित करना है, इसलिए मैं गैर-खाली निर्देशिका को अधिलेखित किया जा सकता है।

मैं वर्तमान में उपयोग कर रहा हूं mv ... destination, लेकिन कभी-कभी मुझे मिलता है

mv: `लक्ष्य 'को / गंतव्य / लक्ष्य पर नहीं ले जा सकता': निर्देशिका खाली नहीं है

मैंने mv -f ... destinationबिना किसी सफलता के साथ कोशिश की और चूंकि मैं चाहता हूं कि फाइलें उनके मूल स्थान से चली जाएं, इसलिए rsyncयह उचित नहीं लगता।

एक बोनस के रूप में, क्या नाम बदलने से किसी भी तरह अधिलेखित होने वाली फ़ाइलों को संरक्षित करने का एक अच्छा समाधान है?


और जब आप अपने mv कमांड को आज़माते हैं तो आपको क्या त्रुटि मिलती है?
सस्पेंस

आप स्पष्ट रूप से कहते हैं कि rsyncजैसा आप चाहते हैं वैसा नहीं है; आपने इसके साथ टैग क्यों किया rsync?
डोपघोटी

@DopeGhoti मैंने कहा कि यह उचित नहीं लगता है, लेकिन मैं अन्यथा दिखाए जाने के लिए तैयार हूं।
उपयोगकर्ता 1227038

@suspectus अपडेटेड प्रश्न।
user1227038

1
यदि आप स्विच के mv --backup=numberedलिए उपयोग या अन्य विकल्पों में से एक का उपयोग करते हैं --backup, तो mvमर्ज को पूरा करेगा और अधिलेखित की जाने वाली फ़ाइलों को संरक्षित करेगा
bsd

जवाबों:


19

यदि आप mv --backup=numbered
(या --backupस्विच के लिए अन्य विकल्पों में से एक ) का उपयोग करते हैं,
तो mvमर्ज को पूरा करेगा और अधिलेखित की जाने वाली फ़ाइलों को संरक्षित करेगा।


गूंगा उत्तर - यह आपके ड्राइव को .~1~फ़ोल्डर के साथ प्रदूषित करेगा
टूलकिट

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
इस स्क्रिप्ट के बजाय, कोई भी सीधे कमांड cpद्वारा चला सकता है mv
reza.safiyat

0

आप उपयोग कर सकते हैं mcस्क्रीन के अंदर (मध्यरात्रि कमांडर) और साथ साथ फ़ोल्डर्स InsऔरF6

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.