मैं rename
हर समय उपयोग करता हूं । यह बहुत आसान है, लेकिन उम्मीद है कि आप मूल regex जानते हैं:
rename "s/SEARCH/REPLACE/g" *
यह स्ट्रिंग SEARCH
को REPLACE
प्रत्येक फ़ाइल (जो है *
) के साथ बदल देगा । /g
वैश्विक का अर्थ है, इसलिए यदि आपके पास SEARCH_SEARCH.jpg
इसका नाम है, तो इसका नाम बदल दिया जाएगा REPLACE_REPLACE.jpg
। यदि आपके पास नहीं होता /g
, तो यह केवल एक बार प्रतिस्थापन होता, और अब नाम दिया गया REPLACE_SEARCH.jpg
। यदि आप केस-असंवेदनशील चाहते हैं, तो जोड़ें /i
(जो होगा, /gi
या /ig
अंत में)।
नियमित अभिव्यक्तियों के साथ, आप बहुत अधिक कर सकते हैं।
ध्यान दें कि यह rename
है prename
(उर्फ पर्ल rename
) आदेश, जो पूरा पर्ल नियमित अभिव्यक्ति का समर्थन करता है। एक और है rename
जो पैटर्न का उपयोग करता है, और उतना शक्तिशाली नहीं है। prename
उबंटू पर डिफ़ॉल्ट रूप से (पर्ल के साथ) स्थापित किया जाता है, लेकिन अब आपको यह करना पड़ सकता है:
sudo apt install rename
कुछ उदाहरण निम्नलिखित हैं:
उपसर्ग
जोड़ें :
rename 's/^/MyPrefix_/' *
document.pdf
का नाम बदल दिया MyPrefix_document.pdf
निकालें :
इसके अलावा, आप अवांछित तारों को हटा सकते हैं। मान लीजिए कि आपके पास 20 एमपी 3 फाइलें हैं जैसे कि CD RIP 01 Song.mp3
आप चाहते हैं और आप "सीडी रिप" भाग को हटाना चाहते हैं, और आप उन सभी को एक कमांड से हटाना चाहते हैं।
rename 's/^CD RIP //' *
CD RIP 01 Song.mp3
सेवा 01 Song.mp3
अंतरिक्ष में अतिरिक्त स्थान पर ध्यान दें, अंतरिक्ष के '^CD RIP '
बिना सभी फाइलों में फ़ाइल के पहले चरित्र के रूप में एक स्थान होगा। यह भी ध्यान दें, यह ^
चरित्र के बिना काम करेगा , लेकिन CD RIP
फ़ाइल नाम के किसी भी भाग में मेल खाएगा । ^
गारंटी देता है यह केवल पात्रों को हटा वे फ़ाइल की शुरुआत कर रहे हैं।
प्रत्यय
जोड़ें :
rename 's/$/_MySuffix/' *
document.pdf
का नाम बदल दिया document.pdf_MySuffix
बदलें :
rename 's/\.pdf$/.doc/' *
में बदल Something.pdf
जाएगा Something.doc
। (बैकस्लैश का कारण है, .
regexp में वाइल्डकार्ड कैरेक्टर है, इसलिए .pdf
मेल खाता है qPDF
जबकि \.pdf
केवल सटीक स्ट्रिंग से मेल खाता है .pdf
। यह भी ध्यान रखना बहुत महत्वपूर्ण है, अगर आप BASH से परिचित नहीं हैं, तो आपको SINGLE उद्धरणों में बैकस्लैश डालना होगा! या दोहरे उद्धरण चिह्नों का उपयोग करें, या बैश उन्हें अनुवाद करने का प्रयास करेंगे। बैश \.
और "\."
बराबर करने के लिए .
। (लेकिन डबल-कोट्स और बैकस्लैश का उपयोग किया जाता है, उदाहरण के लिए "\ n" एक नई पंक्ति के लिए, लेकिन चूंकि "\."
यह एक वैध बैक एस्केप अनुक्रम नहीं है, इसलिए में अनुवाद .
)
वास्तव में, आप पूरे के बजाय उद्धरण में स्ट्रिंग के हिस्सों को भी संलग्न कर सकते हैं: BASH 's/Search/Replace/g'
के समान s/'Search'/'Replace'/g
और समान है s/Search/Replace/g
। आपको बस विशेष पात्रों (और रिक्त स्थान) के बारे में सावधान रहना होगा।
मेरा सुझाव है कि -n
विकल्प का उपयोग करते समय जब आप सकारात्मक नहीं होते हैं तो आपके पास सही नियमित अभिव्यक्ति होती है। यह दिखाता है कि क्या नाम बदला जाएगा, फिर इसे किए बिना बाहर निकलता है। उदाहरण के लिए:
rename -n s/'One'/'Two'/g *
यह उन सभी परिवर्तनों को सूचीबद्ध करेगा जो उसने किए होंगे, क्या आपने -n
वहां झंडा नहीं लगाया था । यदि यह अच्छा लगता है Up, तो वापस जाने के लिए दबाएं , फिर मिटाएं -n
और दबाएं Enter(या इसे -v
उन सभी परिवर्तनों को आउटपुट करने के लिए बदलें जो इसे बनाता है)।
नोट : 17.04 से ऊपर के उबंटू संस्करण rename
डिफ़ॉल्ट रूप से जहाज नहीं करते हैं , हालांकि यह अभी भी रिपॉजिटरी में उपलब्ध है। sudo apt install rename
इसे स्थापित करने के लिए उपयोग करें