निम्न फ़ाइल जैसी निर्देशिका में फ़ाइलों का नाम बदलने के लिए कैसे:, PMC21375.pdf.txtमुझे नाम बदलने की आवश्यकता है 21375.txt। यानी, मुझे दोनों PMCऔर pdfप्रत्येक फ़ाइल नाम से निकालने की आवश्यकता है ।
निम्न फ़ाइल जैसी निर्देशिका में फ़ाइलों का नाम बदलने के लिए कैसे:, PMC21375.pdf.txtमुझे नाम बदलने की आवश्यकता है 21375.txt। यानी, मुझे दोनों PMCऔर pdfप्रत्येक फ़ाइल नाम से निकालने की आवश्यकता है ।
जवाबों:
rename 's/(PMC|\.pdf)//g' *pdf.txt
डेमो:
$ ls *txt
PMC21375.pdf.txt
$ rename -n 's/(PMC|\.pdf)//g' *txt
PMC21375.pdf.txt -> 21375.txt
से shellशीघ्र। यह बहुत उपयोगी है, आप कुछ डाल सकते हैंपर्लकोड की तरह मैं एक प्रतिस्थापन में करता हूं। जब आपके परीक्षण वैध हो जाते हैं तो
आप -n(ड्राई-रन मोड स्विच) को हटा सकते हैं ।
एक ही नाम के साथ अन्य उपकरण हैं जो ऐसा करने में सक्षम हो सकते हैं या नहीं कर सकते हैं, इसलिए सावधान रहें।
यदि आप निम्न कमांड चलाते हैं ( linux)
$ file $(readlink -f $(type -p rename))
और आप की तरह एक परिणाम है
.../rename: Perl script, ASCII text executable
तब यह सही उपकरण प्रतीत होता है =)
यदि नहीं, तो इसे डिफ़ॉल्ट रूप से (आमतौर पर पहले से ही मामला) बनाने Debianऔर व्युत्पन्न करने के लिए जैसे Ubuntu:
$ sudo update-alternatives --set rename /path/to/rename
( /path/to/renameअपने perl's renameआदेश के पथ को बदलें ।
अंतिम लेकिन कम से कम, यह उपकरण मूल रूप से लैरी वाल, पर्ल के पिता द्वारा लिखा गया था।
नाम बदलने के अलावा, आप इसे सीधे bash में कर सकते हैं (कई का सिर्फ एक तरीका):
for file in *pdf.txt; do mv $file ${file//[A-Z.]}.txt ; done
पिनाका को दिखाने के लिए संपादित कि यह कैसे काम करता है:
hmontoliu@ulises2:/tmp/foo$ touch PCM21375.pdf.txt PCM21376.pdf.txt
hmontoliu@ulises2:/tmp/foo$ ls
PCM21375.pdf.txt PCM21376.pdf.txt
hmontoliu@ulises2:/tmp/foo$ for file in *pdf.txt; do mv $file ${file//[A-Z.]}.txt ; done
hmontoliu@ulises2:/tmp/foo$ ls
21375.txt 21376.txt
.pdfफ़ाइल नाम से नहीं निकालेगा ।
फ़ाइलों का नाम बदलने के लिए कई उपयोगिताओं हैं, लेकिन सबसे आसान उपयोग में से एक है rename। आपके मामले में, आप शायद कर सकते हैं:
rename PMC '' *txt
rename .pdf '' *txt
पहले पैरामीटर को बदलने के लिए फ़ाइलनाम का हिस्सा है। दूसरा पैरामीटर प्रतिस्थापन स्ट्रिंग है। यहां मैं ''खाली स्ट्रिंग का प्रतिनिधित्व करने के लिए उपयोग कर रहा हूं । निम्नलिखित सभी मापदंडों का नाम बदलने के लिए फाइलें हैं, यहां मैंने *txtपाठ फ़ाइलों के प्रतिस्थापन को सीमित करने के लिए उपयोग किया ।
renameयदि आप लिनक्स चला रहे हैं तो पहले से मौजूद होना चाहिए। यदि आप एक * बीएसडी या ओएस एक्स चला रहे हैं, तो आपको इसे पहले स्थापित करना पड़ सकता है।
rename। एक से एक है util-linux, और एक से एक perlअलग वाक्यविन्यास। एक आप से एक की तरह दिखता है की बात कर रहे util-linuxहै कि कभी कभी कहा जाता है rename.ulतो के रूप में के साथ भ्रमित होने की नहीं renameसे perlहै, जबकि कुछ अन्य सिस्टम पर, renameutil-linux से एक और से एक है perlकहा जाता है prename।
rename 's/PMC// *.txtrename s/\.pdf// *.txt
सबसे पहले अपनी फाइलों का बैकअप बनाएं! फिर मूल रूप से आप सामान्य फॉर्म के साथ मौजूदा निर्देशिका में एक अजगर वन-लाइनर का उपयोग कर सकते हैं:
python -c "import glob,os; [os.rename(fn, fn.replace('PATTERN', 'REPLACE')) for fn in glob.glob('PATH/*')]"
अपने विशिष्ट मामले में, आप इसे दो बार उपयोग कर सकते हैं:
python -c "import glob,os; [os.rename(fn, fn.replace('.pdf', '')) for fn in glob.glob('*')]"
हटाने के लिए .pdfऔर फिर से:
python -c "import glob,os; [os.rename(fn, fn.replace('PMC', '')) for fn in glob.glob('*')]"
दूर करना PMC।
इसे इस्तेमाल करे:
for i in *.pdf.txt; do j=${i//\.pdf/}; j=${j//PMC/}; mv $i $j; done
j=${i//\.pdf/}साधन स्थानापन्न करने .pdfमें $iकुछ भी नहीं के साथ। इसी तरह दूसरे जे असाइनमेंट के साथ पीएमसी से छुटकारा पाएं।
यदि आप उपयोग कर रहे हैं zsh, तो यह एक सामान्य काम है zmv:
zmv 'PMC(*).pdf.txt' '$1.txt'
( zmvसंभालता है संभावित संघर्षों को इनायत से)।
.pdfफ़ाइल नाम से नहीं निकालेगा ।