如何将数字递增的文件重命名为该数字加10的文件

时间:2019-08-15 16:59:44

标签: bash

嗨,我有一份文件清单。 0.png,1.png ... 60.png,61.png,我想将所有文件重命名为10.png,11.png ... 70.png,71.png,但是我不知道如何可以做到。

2 个答案:

答案 0 :(得分:1)

在bash中,您可以使用参数扩展来处理重命名,例如

for name in *.png; do
    val="${name%.png}"
    val=$((val+10))
    mv "$name" "$val.png"
done

说明

  • val是通过参数扩展"${name%.png}"创建的,该扩展仅从文件名的右侧修剪".png"
  • val=$((val+10))10添加到数字中。
  • mv "$name" "$val.png"将文件从其原始名称移到新名称,其值增加10

如果您要消除中间的val变量,则可以在单个表达式中完成所有操作,例如

for name in *.png; do
    mv "$name" "$((${name%.png} + 10)).png"
done

仔细检查一下,如果还有其他问题,请告诉我。

答案 1 :(得分:0)

假设文件名的格式为number.ext,则此功能可以解决问题。

#!/bin/bash

function rename_file() {
    local file=$1
    local fname=$(($(echo $file | cut -d. -f1) + 10))
    local ext=$(echo $file | cut -d. -f2)
    mv $file $fname.$ext
}

要重命名文件,请在Shell脚本中调用named_file file_name。