在实际的测试中,执行数据导入到数据库表时,在加载数据文件的时候需要判断信号文件,但是信号文件的名字有一个日期的字段,信号文件数量比较多,每次手动替换比较麻烦,本文将分享替换它们的实现方法
比如实际的信号文件是形如:
test_20221229.list
demo_20221229.list
java_20221229.list
那么需要替换20221229为20440101,就可以这么实现
#!/bin/bash
#执行脚本需要传入一个日期参数,这个日期是用来替换信号文件中原有的日期
if [ $# == 1 ];then
fileDate=$1
else
fileDate=`date -d "1 days ago" +%Y%m%d` #不传入参数时,默认使用的是当前日期的前一天
fi
#定义变量
path=/home/app/data/listFiles/
[ -d $path ] && cd $path
for var in `ls`
do
mv $var ${var//${var:0-13:8}/${fileDate}}
done
执行脚本:
./test.sh 20440101
则$path路径下的文件被替换为了
test_20440101.list
demo_20440101.list
java_20440101.list
同样地,如果文件名后缀是txt这种,比如java_20221229.txt,只需要给上述的一个数字改一下就行,改成从倒数第12位开始,即:
mv $var ${var//${var:0-12:8}/${fileDate}}
希望能帮助到大家,欢迎大家一起交流!