मेरे पास टिफ़ नाम की एक संख्या है:
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