0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

シェルスクリプトで階層された圧縮ファイルを解凍する方法

Last updated at Posted at 2020-02-09

目的

以下のようなファイル構造になっている圧縮ファイルを纏めて解凍して
ワークディレクトリに格納するシェルスクリプトを載せる。
今回は、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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?