我有一堆这样的文件:
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
在执行此操作之前,您应该检查命令以确保它们执行您想要的操作,并进行备份。