如何重命名
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
Run Code Online (Sandbox Code Playgroud)
到
sluno-call-metroua-status-20201027.mp4
sluno-call-deriva-20201103.mp4
sluno-call-metroua-status-20201103.mp4
sluno-call-makrocz-20201105.mp4
...
Run Code Online (Sandbox Code Playgroud)
只需将位置7-14上的日期/字符串移动到文件名的末尾。
谢谢。
mmv 适用于简单的文件重命名。
mmv '*-*-*-*.mp4' '#1-#3-#4-#2.mp4'
Run Code Online (Sandbox Code Playgroud)
拥有更多参考点也可能会有所帮助,以确保不会更改其他内容的名称,尤其是在同一目录中可能存在其他文件的情况下。
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
Run Code Online (Sandbox Code Playgroud)
如果我有最低限度做到这一点,mv而且bash我会用一个for循环,进入bash内置BRE匹配。
for i in *.mp4; do \
[[ $i =~ ^sluno-(.*)-call-(.*).mp4 ]] && \
mv -- "$i" "sluno-call-${BASH_REMATCH[2]}-${BASH_REMATCH[1]}.mp4"; \
done
Run Code Online (Sandbox Code Playgroud)