-1

我在一个文件夹中有很多图片,如下所示:

foo.png
foo.png.~1~
foo.png.~2~
以此类推

我希望他们被命名为

foo.png
foo1.png
foo2.png
等等

我怎样才能做到这一点?我正在使用 Ubuntu 服务器 13.04

谢谢!

- 是的,我在发帖前进行了搜索,但找不到任何对我有帮助的东西。

4

1 回答 1

1

您可以使用这样的 bash 脚本遍历每个文件名:

#!/bin/bash
for f in *
do
  name=(${f//./ })      # split the filename on period. Note - the space matters!
  number=(${f//\~/ })   # similar trick to find the number between tildes
  newName=${name[0]}${number[1]}${name[1]}       # construct the new name from array elements
  echo "now you can rename " $f " to " $newName  # print out the new name as a check
done

我故意省略了“重命名”命令,而是用“回声”代替它。看看这是否符合您的要求-然后将echo行更改为

mv $f $newName

您可能希望将文件复制到新目录,而不是进行批量重命名,直到您确定一切正常。我不想为一堆文件被覆盖或以其他方式损坏负责。当然这就像

mv $f newDirectory/$newName
于 2013-07-16T19:18:40.093 回答