目的
以下のようなファイル構造になっている圧縮ファイルを纏めて解凍して
ワークディレクトリに格納するシェルスクリプトを載せる。
今回は、tarとgzで階層化されているがコマンドを変えれば、
他の圧縮形式にも対応することができる。
# tarの中にgzが入れ子となっているようなファイル構造
XXXXXXX.tar
|- MMMMMM.gz
|- MMMMMM.gz
|- MMMMMM.gz
・
・
・
XXXXXXX.tar
|- MMMMMM.gz
|- MMMMMM.gz
|- MMMMMM.gz
・
・
・
スクリプトファイル
実行対象の圧縮ファイルが格納されたディレクトリ(SCRIPT_DIR)で、sh main.sh
を実行すると、
実行時の現在時刻のワークディレクトリ(WORK_DIR) に全てデータを展開する。
main.sh
# !/bin/sh
## 階層された圧縮ファイルを解凍するスクリプト ##
## カレントディレクトリを取得
SCRIPT_DIR=$(cd $(dirname $0); pwd)
## 現在時刻を取得
NOW_TIME=`date "+%Y%m%d_%H%M%S"`
## 展開先ディレクトリを変数で定義し、格納用ディレクトリを作成
WORK_DIR="${SCRIPT_DIR}/${NOW_TIME}"
mkdir $WORK_DIR
## カレントディレクトリ内のtarファイルを格納用ディレクトリに展開
## 格納用ディレクトリにデータを展開し次第、実ファイルは削除
for SCRIPT_DIR in `\find $SCRIPT_DIR -maxdepth 1 -name '*.tar'`;
do
tar -xvf $SCRIPT_DIR -C $WORK_DIR
rm $SCRIPT_DIR -f
done
# 格納用ディレクトリ内のzipファイルを同ディレクトリ内に展開
for WORK_DIR in `\find $WORK_DIR -maxdepth 1 -name '*.gz'`;
do
gzip -d $WORK_DIR
done