Shell中使用tar命令批量解压缩的实现方法

1,154 阅读1分钟

因内网环境中需要大批量解压缩.tar.gz文件 所以想了一些方法去实现。 tar原生不支持批量解压,故可以采用循环读取文件名的方法实现解压。 ####代码实现:

#获取类型(Http等),目录地址,临时方案
type=$1
dir=$2
#获取时间,包括月、日、小时账期
#测试使用-调度内采用Oracle导入时间参数  
v_month=`date -d "-1 month" '+%Y%m'` #当月
echo $v_month
v_day=`date '+%Y%m%d'` #当日
echo $v_day
#v_hour=`date -d "-1 hour" '+%Y%m%d%H'` #前一个小时
echo $v_hour

#创建临时文件夹
temp='temp_'${type}'_'${v_hour}
echo ${temp}
mkdir ${dir}/${temp}

#解压数据 匹配对应类型type和时间戳
for i in `ls ${dir}/*${v_hour}*${type}*`
do 
    tar -xzvf $i -C ${dir}/${temp}  #执行压缩 
done 

当然也可以使用管道 | 实现,语法更为简洁 ####代码实现:

#获取类型(Http等),目录地址,临时方案
type=$1
dir=$2
#获取时间,包括月、日、小时账期
#测试使用-调度内采用Oracle导入时间参数  
v_month=`date -d "-1 month" '+%Y%m'` #当月
echo $v_month
v_day=`date '+%Y%m%d'` #当日
echo $v_day
#v_hour=`date -d "-1 hour" '+%Y%m%d%H'` #前一个小时
echo $v_hour

#创建临时文件夹
temp='temp_'${type}'_'${v_hour}
echo ${temp}
mkdir ${dir}/${temp}

#解压数据 匹配对应类型type和时间戳
ls ${dir}/*${v_hour}*${type}* | xargs -n1 -i tar xzvf {} -C ${dir}/${temp} 

参考文章:blog.csdn.net/silentwolfy…