移动部分文件名

时间:2013-07-16 18:16:17

标签: ubuntu rename batch-rename

我在这样的文件夹中有很多图片:

  

foo.png   
foo.png。〜1〜   
foo.png。〜2〜   
等等

我希望它们被命名为

  

foo.png   
foo1.png   
foo2.png   
等等

我该怎么做?我正在使用Ubuntu Server 13.04

谢谢!

- 是的,我在发帖前搜索过,但找不到任何帮助我的东西。

1 个答案:

答案 0 :(得分: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