【问题标题】:Change filenames in a specific folder through bash通过 bash 更改特定文件夹中的文件名
【发布时间】:2016-11-29 16:26:22
【问题描述】:

我有一个文件夹 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

...

...

...

你能帮帮我吗? 谢谢

【问题讨论】:

标签: linux bash filenames


【解决方案1】:

首先注意:

i+=1

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

((++i))

接下来你需要分割你的文件名,如果“.”是一种方式。只出现一次:

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

最后移动:

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

【讨论】:

    【解决方案2】:

    抱歉,我找到了解决方案。

    这段代码运行良好。

    #!/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
    

    【讨论】:

      【解决方案3】:
      #!/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
      

      【讨论】:

      • 是的,我得出了同样的结论。谢谢大家的回复。
      猜你喜欢
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 2021-07-17
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 2013-01-12
      相关资源
      最近更新 更多