मैं कमांड लाइन के माध्यम से एक निर्देशिका का नाम कैसे बदलूं?


564

मुझे निर्देशिका मिल गई है /home/user/oldnameऔर मैं इसका नाम बदलना चाहता हूं /home/user/newname। मैं एक टर्मिनल में यह कैसे कर सकता हूं?



हमेशा mvया का उपयोग करें rename
जॉन स्ट्रॉड जूल

जवाबों:


737
mv /home/user/oldname /home/user/newname


अच्छा लेख। ठीक यही बात है।
राफेल Cie Auglak

76
यह काम नहीं करेगा यदि नया नाम पहले से ही एक मौजूदा निर्देशिका है। इसके बजाय, यह पुरानी निर्देशिका को नए के अंदर ले जाएगा।
cxrodgers

9
यदि डायरेक्टरी का नाम कैपिटलाइज़ेशन के साथ समान है, तो आपको मिलेगा No such file or directory। इससे बचने के लिए कुछ ऐसा करें mv /home/user/Folder /home/user/temp; mv /home/user/temp/ /home/user/folder
16

9
@cxrodgers: पास --no-target-directory( -T) , newnameलक्ष्य निर्देशिका के रूप में इलाज से बचने के लिए ।
jfs

123

mv दो काम कर सकते हैं।

  1. यह फ़ाइलों या निर्देशिकाओं को स्थानांतरित कर सकता है
  2. यह फ़ाइलों या निर्देशिकाओं का नाम बदल सकता है

टर्मिनल में किसी फ़ाइल या निर्देशिका का नाम बदलने के लिए:

mv old_name new_name 

पुराने और नए नामों के बीच की जगह के साथ।

किसी फ़ाइल या निर्देशिका को स्थानांतरित करने के लिए इसे टर्मिनल में टाइप करें।

mv file_name ~/Desktop 

यह फ़ाइल को डेस्कटॉप पर ले जाएगा।

यदि निर्देशिका है तो आपको -Rनिर्देशिका नाम से पहले जोड़ना चाहिए :

mv -R directory_name ~/Desktop

3
mvउबंटू में जीएनयू कोरुटिल्स से है। AFAICT में इसका -Rविकल्प नहीं है , और न ही किसी निर्देशिका को ले जाने के दौरान यह आवश्यक है।
अरीफ सेप

-r भी काम नहीं करता है
user1735921

सही विकल्प है -T। इसके व्यवहार के लिए @ बामुपिन का उत्तर देखें ।
कालक्रमिक

39
mv -T /home/user/oldname /home/user/newname

यदि गंतव्य मौजूद नहीं है या यदि यह मौजूद है, लेकिन यह खाली है, तो यह निर्देशिका का नाम बदल देगा। अन्यथा यह आपको एक त्रुटि देगा।

यदि आप इसके बजाय ऐसा करते हैं:

mv /home/user/oldname /home/user/newname

दो चीजों में से एक होगा:

  • तो /home/user/newnameमौजूद नहीं है, इसका नाम बदलना होगा /home/user/oldnameकरने के लिए/home/user/newname
  • तो /home/user/newnameमौजूद है, यह चले जाएँगे /home/user/oldnameमें /home/user/newname, यानी/home/user/newname/oldname

स्रोत: कैसे तय करने के बजाय कि निर्देशिका में mv एक निर्देशिका में जाता है?


अगर आप केस-असंवेदनशील फाइल सिस्टम (MacOS पर संभावना) में डायरेक्टरी नाम को कैपिटल करना चाहते हैं तो काम नहीं करता है। mv -T $PWD/analisys $PWD/Analisysलौटता है mv: '/Users/sixtykeys/Projects/murphy/tmp/analisys' and '/Users/sixtykeys/Projects/murphy/tmp/Analisys' are the same file। मैंने एक मध्यवर्ती नाम (यानी analisys_) का उपयोग करके इसके चारों ओर काम किया ।
तुलसीकोड

फाइल सिस्टम की सीमाओं के कारण कमांड सफल नहीं हो सकता है, लेकिन एक अन्य दृष्टिकोण से यह आपके इरादों की व्याख्या करने में सफल रहा (एक निर्देशिका का नाम बदलकर, इसे आगे नहीं बढ़ाना) :)
bmaupin

क्या आपने यह कोशिश की?
महमूद एस। मारवाड़

5

यदि आप फ़ाइल सिस्टम में अपने स्तर पर एक निर्देशिका का नाम बदलना चाहते हैं (जैसे, आप अपने घर की निर्देशिका में हैं और एक निर्देशिका का नाम बदलना चाहते हैं जो आपके घर की निर्देशिका में भी है):

mv Directory ./NewNameDirectory

4

यह gvfs-moveकमांड फाइलों और निर्देशिकाओं का भी नाम बदलेगी।

gvfs-move /home/user/oldname /home/user/newname

3

gvfs-rename का नाम बदलकर डायरेक्टरी भी हो जाएगी। यह एक त्रुटि देगा यदि नया नाम वाली निर्देशिका पहले से मौजूद है। केवल सीमा यह है कि आप फ़ोल्डर नाम के साथ पथ का उपयोग नहीं कर सकते। इसलिए

gvfs-rename /home/boo /home/boo-the-dog 

काम नहीं करेगा, लेकिन

cd /home 
gvfs-rename boo boo-the-dog 

काम करेगा। एमवीटी के रूप में उपयोगी नहीं है, लेकिन मैं उस आदमी में पढ़ता हूं जो नेटवर्क संचालन के लिए था।

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