bash、文件、重命名文件、切换位置

bash、文件、重命名文件、切换位置

如何重命名

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到文件名的末尾即可。

谢谢。

答案1

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

如果我要用最少的来实现,mvbash会使用 for 循环和bash内置 BRE 匹配。

for i in *.mp4; do \
    [[ $i =~ ^sluno-(.*)-call-(.*).mp4 ]] && \
    mv -- "$i" "sluno-call-${BASH_REMATCH[2]}-${BASH_REMATCH[1]}.mp4"; \
done

答案2

使用rename

rename -n 's/^(.*?)-(.*?)-(.*?)(\.mp4)$/$1-$3-$2$4/' *.mp4

-n如果对输出满意,请删除。

如需解释,请访问

答案3

另外一个选择:

$ qmv {模式}

将会把 2 列文件名放入您选择的编辑器中。

修改右列以获得您想要的文件名。

左侧列为原始名称。右侧组的起始列无法更改,因此自动换行可能会造成影响。

在每个编辑器的专家手中,速度会非常快,尤其是对于 vim 列和可视模式。

一般来说,我使用重命名,但对于复杂的需求,在编辑器中看到确切的名称会很好。

相关内容