如何使用模式重命名文件夹中的所有文件

Ya_*_*_34 3 command-line bash regex rename

我有一堆文件,例如:

bla.super.lol.S01E03.omg.bbq.mp4
bla.super.lol.S01E04.omg.bbq.mp4
bla.super.lol.s03e12.omg.bbq.mp4
Run Code Online (Sandbox Code Playgroud)

我需要将它们全部重命名为:

s01e03.mp4
s01e04.mp4
s03e12.mp4
Run Code Online (Sandbox Code Playgroud)

我试过这样做,for file in *; do mv $file ${file%%\.omg*}; done但它只删除了 S01E01 之后的部分,而不是在它之前,所以请帮忙

hee*_*ayl 9

rename( prename):

rename -n 's/^bla\.super\.lol\.[sS](\d+)[eE](\d+)\..*(\.mp4$)/s$1e$2$3/' *.mp4
Run Code Online (Sandbox Code Playgroud)

-n进行干运行,如果您对潜在的重命名感到满意,只需删除-n即可进行实际的重命名:

rename 's/^bla\.super\.lol\.[sS](\d+)[eE](\d+)\..*(\.mp4$)/s$1e$2$3/' *.mp4
Run Code Online (Sandbox Code Playgroud)

例子:

$ ls -1
bla.super.lol.S01E03.omg.bbq.mp4
bla.super.lol.S01E04.omg.bbq.mp4
bla.super.lol.s03e12.omg.bbq.mp4

$ rename -n 's/^bla\.super\.lol\.[sS](\d+)[eE](\d+)\..*(\.mp4$)/s$1e$2$3/' *.mp4
bla.super.lol.S01E03.omg.bbq.mp4 renamed as s01e03.mp4
bla.super.lol.S01E04.omg.bbq.mp4 renamed as s01e04.mp4
bla.super.lol.s03e12.omg.bbq.mp4 renamed as s03e12.mp4
Run Code Online (Sandbox Code Playgroud)