🐙
tar.gzで第2階層以下を、指定ディレクトリに展開する
下記構成のディレクトリが存在しているとき、
$ tree
.
└── target_dir
├── test.txt
└── test2.txt
1 directory, 2 files
target_dirを圧縮して
$ tar zcvf target_dir.tar.gz target_dir
解凍すると、target_dirディレクトリが展開される
.
└── target_dir
├── test.txt
└── test2.txt
下記構成のとき、すでにtarget_dirは存在しているので同階層にtarget_dirに干渉しない形で圧縮ファイルを展開したい場合
$ tree
.
├── target_dir
│ ├── test.txt
│ └── test2.txt
└── target_dir.tar.gz
下記コマンドを入力することでtarget_dir2を作成し、その配下にtarget_dirの中身を展開することができる。
$ mkdir target_dir2 && tar zxvf target_dir.tar.gz -C target_dir2 --strip-components 1
確認
target_dir2配下に展開したファイルが存在していることが確認できる。
$ tree
.
├── target_dir
│ ├── test.txt
│ └── test2.txt
├── target_dir.tar.gz
└── target_dir2
├── test.txt
└── test2.txt
2 directories, 5 files
解説
$ mkdir target_dir2 && tar zxvf target_dir.tar.gz -C target_dir2 --strip-components 1
- mkdirでtarget_dir2ディレクトリを作成。
- -Cオプションで指定のディレクトリへ展開。
- --strip-components 1 で、第1階層を切り捨てて第2階層以下を展開する。(strip-componentsで指定する数字で切り捨てたい階層を指定できる)
Discussion