使用带有bash的正则表达式重命名文件

时间:2009-12-25 14:42:06

标签: regex bash

  

可能重复:
  rename multiple files at once in unix

我想使用正则表达式重命名文件夹中的所有文件(在名称末尾添加名称)并移至另一个文件夹。

我认为,它应该是这样的:

mv -v ./images/*.png ./test/*test.png

但它不起作用。

有人能建议我解决方案吗?

4 个答案:

答案 0 :(得分:73)

如果您使用的是Linux,请检查特殊的rename命令,该命令就是这样 - 使用正则表达式重命名。

rename 's/^images\/(.+)/test\/$1.png/s' images/*.png

否则,在文件名上写一个bash循环为catwalk suggested

答案 1 :(得分:52)

试试这个:

for x in *.png;do mv $x test/${x%.png}test.png;done

答案 2 :(得分:41)

$ for old in ./images*.png; do
    new=$(echo $old | sed -e 's/\.png$/test.png/')
    mv -v "$old" "$new"
  done

答案 3 :(得分:5)

另一个解决方案是一个名为“mmv”的工具:mmv“./ images / *。png”“。/ test /#1test.png”