निम्न फ़ाइल जैसी निर्देशिका में फ़ाइलों का नाम बदलने के लिए कैसे:, 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
है, जबकि कुछ अन्य सिस्टम पर, rename
util-linux से एक और से एक है perl
कहा जाता है prename
।
rename 's/PMC// *.txt
rename 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
फ़ाइल नाम से नहीं निकालेगा ।