मेरे पास टिफ़ नाम की एक संख्या है:
sw.001.tif
sw.002.tif
...
और मैं .tifप्रत्येक फाइल के अंत में हटाना चाहता हूं । मैं यह करने के लिए renameकमांड का उपयोग कैसे कर सकता हूं ?
मेरे पास टिफ़ नाम की एक संख्या है:
sw.001.tif
sw.002.tif
...
और मैं .tifप्रत्येक फाइल के अंत में हटाना चाहता हूं । मैं यह करने के लिए renameकमांड का उपयोग कैसे कर सकता हूं ?
जवाबों:
perlके renameरूप में (आमतौर पर डेबियन पर पाया जाता है जहां इसे भी कहा जाता है prename), या यह व्युत्पन्न ( renameडेबियन पर पैकेज):
rename 's/\.tif$//' *.tif
util-linux rename(जैसा कि आमतौर पर रेड हैट पर पाया जाता है, rename.ulडेबियन पर):
rename -- .tif '' *.tif
(ध्यान दें कि कि एक का नाम बदल जाएगा blah.tiffany.tifकरने के लिए blahfany.tif)
बिना नाम बदले, आप कर सकते हैं:
$ for i in *.tif; do mv -i $i `basename $i .tif`; done
(-आई एक फ़ाइल की जगह के खिलाफ चेतावनी देने के लिए)
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
rename -- .oldext .newext *.oldext
यह नए के साथ पुराने विस्तार को प्रतिस्थापित करता है। विस्तार को हटाने के लिए आप तर्क के रूप में खाली स्ट्रिंग में स्पष्ट रूप से पास कर सकते हैं।
rename -- .gz.tmp '' *.gz.tmp
उपरोक्त कमांड के साथ .gz.tmpवर्तमान फ़ोल्डर में एक्सटेंशन वाली सभी फ़ाइलों का नाम बदल दिया जाएगा filename.gz।
लेख का संदर्भ लें: लिनक्स: विवरण के लिए कई फाइलों के लिए फ़ाइल एक्सटेंशन हटा दें ।
renameजिसमें से पारंपरिक renameकमांड से असंगत (और बहुत अधिक सीमित) है perl।
.oldext, जरूरी नहीं कि विस्तार ( foo.oldextasy.oldextइसका नाम बदलकर footasy.oldext) हो।
क्या हम इसे पुनरावर्ती बना सकते हैं
for i in *.gz; do mv -i $i `basename $i .gz`; done