बैश, फाइलें, फाइलों का नाम बदलना, पदों को बदलना
नाम कैसे बदला जाए
sluno-20201027-call-metroua-status.mp4
sluno-20201103-call-deriva.mp4
sluno-20201103-call-metroua-status.mp4
sluno-20201105-call-makrocz.mp4
sluno-20201105-call-metroua-testcall.mp4
sluno-20201105-call-sluno-ggtabak.mp4
sluno-20201110-call-makrocz.mp4
sluno-20201110-call-metroua-status.mp4
sluno-20201110-call-sluno-utccz.mp4
सेवा मेरे
sluno-call-metroua-status-20201027.mp4
sluno-call-deriva-20201103.mp4
sluno-call-metroua-status-20201103.mp4
sluno-call-makrocz-20201105.mp4
...
7-14
फ़ाइल के नाम के अंत में स्थिति पर तारीख / स्ट्रिंग को स्थानांतरित करें ।
धन्यवाद।
जवाब
mmv नामांकित फ़ाइल के नामकरण के लिए अच्छी तरह से काम करता है ।
mmv '*-*-*-*.mp4' '#1-#3-#4-#2.mp4'
कुछ और संदर्भ बिंदुओं का होना भी मददगार हो सकता है, यह सुनिश्चित करने के लिए कि किसी और चीज़ पर नाम न बदलें, विशेषकर जहाँ एक ही निर्देशिका में अन्य फ़ाइलें हो सकती हैं।
mmv 'sluno-[0-9]*-call-[a-z]*.mp4' 'sluno-call-#3#4-#1#2.mp4'
^ ^ ^ ^
1 2 3 4
sluno-20201027-call-metroua-status.mp4
^------- ^-------------
1 2 3 4
अगर मैं इसे नंगे न्यूनतम के साथ करना चाहता था, mv
और bash
मैं फॉर-लूप और bash
बिलिन बीआरई मिलान के साथ जाऊंगा ।
for i in *.mp4; do \
[[ $i =~ ^sluno-(.*)-call-(.*).mp4 ]] && \ mv -- "$i" "sluno-call-${BASH_REMATCH[2]}-${BASH_REMATCH[1]}.mp4"; \
done
उपयोग करें rename
:
rename -n 's/^(.*?)-(.*?)-(.*?)(\.mp4)$/$1-$3-$2$4/' *.mp4
-n
यदि आउटपुट से आपका खुश है तो निकालें ।
स्पष्टीकरण के लिए, इस पर जाएँ ।
एक अन्य विकल्प:
$ qmv {पैटर्न}
आपकी पसंद के संपादक में फ़ाइल नाम के 2 कॉलम को छोड़ देगा।
जिन फ़ाइलनामों को आप चाहते हैं उनके लिए सही कॉलम को संशोधित करें।
बाएँ स्तंभ का मूल नाम है। सही समूह का प्रारंभ स्तंभ नहीं बदला जा सकता है, इसलिए ऑटो-रैप रास्ते में मिल सकता है।
प्रत्येक संपादक के साथ एक विशेषज्ञ के हाथों में, यह तेजी से पागल हो सकता है, खासकर विम कॉलम और विज़ुअल मोड के लिए।
सामान्य तौर पर, मैं नाम का उपयोग करता हूं, लेकिन जटिल जरूरतों के लिए, संपादक में सटीक नाम देखना अच्छा है।