当前目录下,有文件名为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
参考: