重命名一堆文件但保留数字部分

重命名一堆文件但保留数字部分

我有一堆这样的文件:

pic100.png
pig102.png
box103a.png
superb103b.png
px103c.png
rotor110 - new.png
ready1323 (yellow car).png
motorhome1036x red circle.png
...

因此,您可以注意到文件可能有 3 个部分:

  • 可以是任何字符串的前缀
  • 可能包含“a”、“b”等后缀的数字。
  • 可选结尾,始终是一个字符串并以空格开头,例如“(黄色汽车)”、“红色圆圈”等。

我需要的是这样的:我希望在一次操作中:

  • 将前缀更改为我想要的前缀
  • 保留数字和后缀(a、b、c...)(如果有)
  • 去掉结尾

使用第一个例子,我可能想将其转换为

object100.png
object102.png
object103a.png
object103b.png
object103c.png
object110.png
object1323.png
object1036x.png

我怎么做?正如你所看到的,我唯一保留的是数字和后缀“a,b,c”(当有一个时)......

为了简单起见,该命令必须对给定目录中的所有文件进行操作。

提前致谢。

答案1

执行此类操作的标准方法是使用 sed 生成新文件名:

ls | while read file; do
     new=$( echo $file | sed 's/[^0-9]*\([^ ]*\)[^.]*\(\..*\)*/object\1\2/' )
     mv "$file" "$new"
done

在执行此操作之前,您应该检查命令以确保它们执行您想要的操作,并进行备份。

相关内容