发布于 5年前
如何通过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