शेल कमांड का उपयोग करके फ़ोल्डर के अंदर फ़ाइल का नाम कैसे बदला जाए?


8

मैं एक फ़ाइल है some/long/path/to/file/myfiel.txt

मैं इसका नाम बदलना चाहता हूं some/long/path/to/file/myfile.txt

वर्तमान में मैं इसे करता हूं mv some/long/path/to/file/myfiel.txt some/long/path/to/file/myfile.txt, लेकिन दो बार पथ टाइप करना बहुत प्रभावी नहीं है (यहां तक ​​कि टैब पूरा होने के साथ)।

मैं यह कैसे तेजी से कर सकता हूं? (मुझे लगता है कि मैं केवल फ़ाइल नाम खंड को बदलने के लिए एक फ़ंक्शन लिख सकता हूं, लेकिन यह योजना बी है)।

जवाबों:


11

एक ही आदेश में ऐसा करने के लिए, आप बस यह कर सकते हैं:

mv some/long/path/to/file/{myfiel.txt,myfile.txt}

जो पूर्ण फ़ाइल नाम के लिए एक उदाहरण है, यह देखते हुए कि यह एक टाइपो है जो आप कुछ ऐसा कर सकते हैं:

mv some/long/path/to/file/myfi{el,le}.txt

दोनों पूर्ण कमांड तक विस्तारित होंगे, इन्हें ब्रेस एक्सपैंशन कहा जाता है । वे zsh द्वारा समर्थित हैं ।


ओह माय, यह बहुत संभावनाएं खोलता है। धन्यवाद!
लियोनिद शेवतोव

5

यहाँ कई विकल्प हैं:

निर्देशिका में बदलें:

cd /home/long/path
mv file1 file2
cd -

निर्देशिका स्टैक का उपयोग करके निर्देशिकाएं बदलें:

pushd /some/long/path
mv file1 file2
popd

एक उप-प्रकार का उपयोग करके निर्देशिका में बदलें:

( 
  cd /some/long/path
  mv file1 file2
)   # no need to change back

ब्रेस विस्तार का उपयोग करें:

mv /some/long/path/{file1,file2}

एक चर का उपयोग करें:

D=/some/long/path
mv "$D/file1" "$D/file2"

खबरदार कि आखिरी रास्ता टूट जाता है जब रास्ते में जगह होती है, तो दांव लगाता है।
15

यदि आपके पास रिक्त स्थान हैं तो @slhck सभी एप्रोच टूट जाते हैं।
टाइरेल

1
नहीं, यदि आप उन्हें सही ढंग से टाइप करते हैं तो वे नहीं करेंगे। केवल चर जब विस्तारित होता है तो mv
slhck

@slhck वहाँ तुम जाओ।
tylerl

3

निर्देशिका को बदलें, फ़ाइल को स्थानांतरित करें, और पिछली निर्देशिका में वापस बदलें; इस तरह:

cd some/long/path/to/file
mv myfiel.txt myfile.txt
cd -

1

जब मैं उपधारा विधि का उपयोग करता हूं तो मैं इसे एक पंक्ति में करना चाहूंगा

(cd /some/long/path ; mv myfiel myfile )
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.