通过bash更改特定文件夹中的文件名

时间:2016-11-29 16:26:23

标签: linux bash filenames

我有一个文件夹FOLDER1,里面有不同的文件。

我在文件夹中有几个文件,扩展名为.png

我想用bash脚本更改扩展名为.png的所有文件的文件名。我试着写一个,但我还没有到达我想要的东西。

#!/bin/bash
# make sure you always put $f in double quotes to avoid any nasty surprises i.e. "$f"
i=0
for f in *.png
do
  echo "${i}Processing $f file..."
  i+=1;
  echo ${i}
  # rm "$f"
done

在脚本结束时,我希望将所有文件命名为:

C-1.png

C-2.png

c-3.png

...

...

...

你可以帮帮我吗? 感谢

3 个答案:

答案 0 :(得分:1)

首先请注意:

i+=1

是字符串添加。你正在做的是0,01,011,0111 ......你需要:

((++i))

接下来,您需要拆分文件名,如果是“。”只出现一次:

base=$(echo $f | cut -d. -f1)

最后搬家:

mv $f ${base}-${i}.png

答案 1 :(得分:1)

抱歉,我找到了解决办法。

此代码运行正常。

#!/bin/bash
# make sure you always put $f in double quotes to avoid any nasty surprises i.e. "$f"
i=0
for f in *.png
do
  echo "$i Processing $f file..."
  i=$((i+1))
  mv $f "c-"$i.png
  #echo ${i}
done

答案 2 :(得分:1)

#!/bin/bash
i=0
for f in *.png
do
  echo "${i}Processing $f file..."
  i=$((i + 1))
  newname="c-${i}.png"
  mv "$f" $newname
done