lixmet
lixmet
发布于 3个月前

如何通过shell脚本实现对文件名中数字做加法以达到修改文件名的效果?

当前目录下,有文件名为:

test_qwe_rty_201711192130_P10.csv、

test_qwe_rty_201711192130_P11.csv、

test_qwe_rty_201711192130_P12.csv、

test_qwe_rty_201711192130_P13.csv、

.....、

test_qwe_rty_201711192130_P19.csv

的文件,如何通过shell脚本将字母 P 后的数字加 10,达到修改文件名的效果?

想通过周期性执行此 shell 脚本,以达到周期性更改当前目录下文件名。

解决方案

 #!/bin/bash

NEWFILE=$1

for file in `ls test* |sort -g -r`
do
    filename=$(basename "$file")

    extension=${filename##*.}

    filename=${filename%.*}
    numpart=${filename##*_P}
    basefilename="${filename%%_P*}_P"

    echo "filename=$filename"
    echo "extension=$extension"
    echo "basefilename=$basefilename"
    echo "numpart=$numpart"

    if [ $numpart -ge $NEWFILE ]
    then
        mv "$file" "$basefilename$(($numpart + 10))".$extension
    fi
done

存为 myinc.sh, 执行

myinc.sh 10

test_qwe_rty_201711192130_P10.csv 将会变成 test_qwe_rty_201711192130_P20.csv