'mv' खींचें और ड्रॉप के बराबर के साथ?


19

GUI वातावरण में, एक ड्रैग-एंड-ड्रॉप के साथ फ़ाइलों और संपूर्ण निर्देशिकाओं (सामग्री सहित) को जो भी कॉपी किया जा रहा है, उसकी जगह लेगा। क्या 'mv' कमांड के साथ इसी सहज परिणाम को पूरा करने का एक तरीका है?

जवाबों:


20

के साथ नहीं mv

mv(इसके नाम के बावजूद) का मुख्य कार्य किसी वस्तु का नाम बदलना है। UNIX द्वारा की गई गारंटियों में से एक यह है कि नामकरण परमाणु हैं - आपको कभी भी आंशिक रूप से पूरा नाम बदलने की अनुमति नहीं है। यह गारंटी बहुत उपयोगी हो सकती है यदि आप किसी फ़ाइल को बदलना चाहते हैं ( /etc/passwdउदाहरण के लिए) जिसे अन्य प्रोग्राम देख रहे हैं, और आप उन्हें फ़ाइल के पुराने या नए संस्करण को देखना चाहते हैं, और कोई अन्य संभावना नहीं है । लेकिन जैसा कि आप वर्णन करते हैं एक "पुनरावर्ती नाम" उस गारंटी को तोड़ देगा - आप इसे बीच में रोक सकते हैं और आपके पास आधा-आधा पेड़ होगा और शायद एक गड़बड़ होगी - और इसलिए यह वास्तव में दर्शन के साथ फिट नहीं है का है mv। यही कारण है कि मेरा mv -rअस्तित्व क्यों नहीं है।

(ऐसा मन कभी न करें जो mvउस दर्शन को दूसरे, छोटे तरीकों से तोड़ता है। उदाहरण के लिए, mvवास्तव में एक फाइलसिस्टम से दूसरे फाइल को ले जाने पर cpउसका अनुसरण होता है rm।)

पर्याप्त दर्शन। यदि आप पुनरावृत्ति करना चाहते हैं ("ड्रैग-ड्रॉप") एक पेड़ से एक ही फाइल सिस्टम पर एक स्थान से दूसरे स्थान पर , आप mvनिम्नानुसार दक्षता और गति प्राप्त कर सकते हैं (उदाहरण के लिए):

cp -al source/* dest/ && rm -r source/*

-lकरने के लिए ध्वज cpका अर्थ है "के बजाय कॉपी करने की एक हार्ड लिंक बनाने" - यह प्रभावी रूप से एक नया फ़ाइल नाम बनाने है कि पुराने फ़ाइल नाम के रूप में एक ही फाइल के आंकड़ों के अंक। यह केवल फाइलसिस्टम पर काम करता है जो हार्ड लिंक का समर्थन करता है, हालांकि - इसलिए कोई भी देशी UNIX-ish फाइल सिस्टम ठीक है, लेकिन यह FAT के साथ काम नहीं करेगा।

&&इसका मतलब है "केवल निम्न आदेश अगर पूर्ववर्ती आदेश सफल चलाने"। यदि आप चाहें, तो आप इसके बजाय एक समय में दो कमांड चला सकते हैं।


अत्यंत सूचनात्मक। आपका बहुत बहुत धन्यवाद!
user7089

4

मुझे नहीं लगता कि आप जिस ड्रैग-ड्रॉप व्यवहार का वर्णन कर रहे हैं mv, उसे दोहरा सकते हैं , क्योंकि लक्ष्य में गैर-रिक्त उपनिर्देशिकाएँ प्रतिस्थापित नहीं की जाएंगी।

शायद rsync? कुछ पसंद है rsync -a -r source/ target/? साथ चलाने के लिए -v -nकरने के लिए एक अत्यधिक शब्द सूखी रन पहले यकीन है कि यह आप क्या चाहते हैं करता है बनाने के लिए।


3

mv -f /path/to/source/folder/* /destination/folder/

फ़ाइलों और निर्देशिकाओं / गंतव्य / फ़ोल्डर सहित / पथ / / से / स्रोत / फ़ोल्डर में सब कुछ ले जाएगा।

और मौजूदा फ़ाइलों और निर्देशिकाओं को अधिलेखित कर देगा।


2
केवल खाली निर्देशिका
केविन

1

आप शायद इसका सही उत्तर बदलना चाहते हैं:

https://github.com/iaindooley/pickdrop

उदाहरण:

मेरा कहना है:

test/
test/index.php
test/images/
test/images/a.jpg
test/images/thing.png

और मैं इन चीजों को / साइट पर ले जाना चाहता हूं

तो ऐसा लगता है:

site/
site/public/
site/public/index.php
site/public/a.jpg
site/public/thing.png

मैं जा सकता हूँ:

cd images &&
pick a.jpg thing.png
cd .. &&
pick index.php &&
cd .. &&
mkdir site &&
mkdir site/public &&
cd site/public &&
drop

यह वस्तुतः कट और पेस्ट है।


बहुत शांत, और निश्चित रूप से देखने लायक। हालाँकि, प्रश्न विशेष रूप से 'mv' के बारे में था, इसलिए मुझे लगता है कि मैं सही उत्तर छोड़ दूंगा क्योंकि mv के पीछे दर्शन विस्तार से बताता है। इस योगदान के लिए धन्यवाद, निश्चित रूप से बहुत उपयोगी है।
user7089

यह भी उल्लेखनीय है, रीडमी से: "यह बिल्कुल भी मजबूत नहीं है - यह आपकी पिक्स को ~ / .pick में स्टोर करता है, जब तक आप ड्रॉप को कॉल नहीं करते हैं, उस समय यह फ़ाइल पथ का उपयोग ~ / .pick में एक नया निष्पादन योग्य बनाने के लिए करता है। / .drop वर्तमान कार्य निर्देशिका में आपके द्वारा चुनी गई प्रत्येक फ़ाइल को कॉपी करने के लिए। "
user7089
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.