Shell脚本:批量解压

一、需求

将指定目录下的所有tar.gz文件解压并删除压缩文件

二、代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#! /bin/sh

#需要传入1个参数
if [ $# -ne 1 ];then
echo "USAGE: sh $0 path"
echo "eg: sh $0 /mnt/bigdan1/"
exit 1
fi

#获取1个参数
srcPath=$1

#判断传入的参数是否存在
if [ ! -d "$srcPath" ];then
echo "$srcPath does not exist"
exit 1
fi

REG="*.tar.gz"
#获取srcPath下的所有tar.gz文件
for dir in $(find $srcPath -name $REG)
do
echo "begin tar -zxf $dir to path: ${dir%/*} `date`"
tar -zxf $dir -C ${dir%/*} && rm -rf $dir
echo "finish ! `date`"
done
exit 0

三、知识点

① $#:参数个数

② find $path -name $REG : 在$path路径下寻找满足正则$REG的所有文件

③ ${dir%/*} : 删掉dir最后一个 / 及其右边的字符串

四、演示