कोई कांटा नहीं:
ls | perl -lne '$suf=substr($_,6); rename $_, "XXXXX-$suf"'
जब आप शेल लूप का उपयोग करते हैं, तो mv
फ़ाइल के अनुसार एक बार कांटे। पर्ल की rename
आज्ञा नहीं है।
(पर्ल के नाम बदलने के आदेश में कुछ प्रतिबंध हैं, लेकिन इस विशिष्ट मामले में वे प्रतिबंध लागू नहीं होते हैं।)
जैसा rename
कि पहले दिखाया गया कमांड के लिए , हां जो काम करता है, लेकिन फिर आपके पास दो अलग-अलग प्रकार के नाम बदलने और इसी तरह की उलझन है। यदि आपके पास सही है, महान है, लेकिन यदि नहीं, तो यह भी काम करता है।
यदि आपके पास perl-rename कमांड नहीं है और इसे स्थापित नहीं कर सकते हैं, तो आप यह कर सकते हैं:
ls | perl -lne '$old=$_; s/(\w+)/XXXXX/; rename $old, $_'
जैसा कि आप देख सकते हैं, यह शीर्ष उत्तर में दिखाए गए समान प्रतिस्थापन का उपयोग करता है। बेशक पर्ल नाम बदलने अन्य घंटियां और सीटियां (ऊपर जवाब उल्लेख किया है, है -n
पहले से ही है, तो वहाँ -0
, -f
, और इतने पर), और उनमें से अधिक आप की जरूरत है, और अधिक आपको लगता है कि अपनी खुद की इस तरह से स्थापित करना चाहिए बजाय रोलिंग ।
rename
। मुझे लगता है कि यह लैरी वॉल का हैrename
,rename
डेबियन में पैकेज और व्युत्पन्न (औरprename
रेडहैट अनुनय की प्रणालियों पर IIRC )। एक बहुत ही उपयोगी उपकरण।