LoginSignup
9
7

More than 3 years have passed since last update.

tar, zipから特定のファイルのみを抽出する

Last updated at Posted at 2019-10-05

tar

tar xvf data.tar ./data/hoge.txt
  • 途中のディレクトリも作成される
  • 同名ファイルがあった場合は上書きされる
  • 展開するファイルは何個でも指定できる

展開するファイル名をワイルドカードで指定したい場合

tarは引数のワイルドカードに対応していないので、tar tfgrep を組み合わせる必要がある。

tar xvf data.tar $(tar tf data.tar | grep '\.txt')

途中のディレクトリを作成せずカレントディレクトリに展開したい場合

-O または --to-stdoutオプションをつけると標準出力に出力されるので、リダイレクトで任意の場所に保存する。

tar xf data.tar -O hoge.txt > hoge.txt
  • ファイルのパーミッション等は復元されないので注意
  • 複数のファイルを指定した場合はその順番通りに連結されて出力されるようだ(少し試した限りでは)

  • --strip-components countというオプションもある(countの指定が面倒だけど)

zip (unzip)

unzip data.zip hoge.txt
  • 途中のディレクトリも作成される
  • 同名ファイルがあった場合は、デフォルトでは上書きするか問い合わせてくる
  • 展開するファイルは何個でも指定できる

zipはワイルドカードも使える。

unzip data.zip '*.txt'

途中のディレクトリを作成せずカレントディレクトリに展開したい場合

-pをつけると標準出力に出力されるので、リダイレクトで任意の場所に保存する。

unzip -p data.zip hoge.txt > hoge.txt
  • ファイルのパーミッション等は復元されないので注意
  • 複数のファイルを指定した場合は連結して出力されるが、順番が指定した通りとは限らないので、若干使いづらい
9
7
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
9
7