Bash 从文件名中删除模式

Bash 从文件名中删除模式,bash,rename,mv,Bash,Rename,Mv,我有一些文件的名称如下: e2ed150l145l245St01-Oxs_MinDriver-Magnetization-00-0002105.omf e2ed150l145l250St01-Oxs_MinDriver-Magnetization-00-0002167.omf e2ed150l145l255St01-Oxs_MinDriver-Magnetization-00-0001519.omf e2ed150l145l260St01-Oxs_MinDriver-Magnetization-

我有一些文件的名称如下:

e2ed150l145l245St01-Oxs_MinDriver-Magnetization-00-0002105.omf
e2ed150l145l250St01-Oxs_MinDriver-Magnetization-00-0002167.omf
e2ed150l145l255St01-Oxs_MinDriver-Magnetization-00-0001519.omf
e2ed150l145l260St01-Oxs_MinDriver-Magnetization-00-0001841.omf
e2ed150l145l265St01-Oxs_MinDriver-Magnetization-00-0002730.omf
e2ed150l145l270St01-Oxs_MinDriver-Magnetization-00-0002788.omf
e2ed150l145l275St01-Oxs_MinDriver-Magnetization-00-0001616.omf
e2ed150l150l250St01-Oxs_MinDriver-Magnetization-00-0002386.omf
e2ed150l150l2100St01-Oxs_MinDriver-Magnetization-00-0015577.omf
我想将它们重命名为:

e2ed150l145l245St01.omf
e2ed150l145l250St01.omf
e2ed150l145l255St01.omf
e2ed150l145l260St01.omf
e2ed150l145l265St01.omf
e2ed150l145l270St01.omf
e2ed150l145l275St01.omf
e2ed150l150l250St01.omf
e2ed150l150l2100St01.omf
在一些类似的论坛之后,我使用了几个命令,包括:

rename 's/-Oxs_MinDriver-Magnetization-00-[0-9]*//g' e2e*.omf -v

但它没有起作用。请告知。

您也可以使用
mv

for i in e2e*.omf; do
    mv $i ${i%%-*}.omf
done

要折叠为一行,请执行以下操作:

for i in e2e*.omf; do mv $i ${i%%-*}.omf; done

如果目标已存在,则使用作为用于子字符串提取的参数扩展的一部分的mv-f

。bash最方便的部分之一
${var##*x}
表示从左侧开始,删除所有内容,包括,
x
。(第一次使用一个
#
)<代码>${var%%x*}相同,但从右侧开始。(注意:
*
如何改变位置)一个
%
的注释相同。第二种形式是子字符串替换。在这里,它表示查找
x*
,并将其替换为零。真正的形式是
${var//x/y/}
。如果
y
为空,则表示结束
/
。谢谢你的澄清。
for i in e2e*.omf; do mv $i ${i%%-*}.omf; done