मैं 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इसे स्थापित करने के लिए उपयोग करें