tar
tar xvf data.tar ./data/hoge.txt
- 途中のディレクトリも作成される
 - 同名ファイルがあった場合は上書きされる
 - 展開するファイルは何個でも指定できる
 
展開するファイル名をワイルドカードで指定したい場合
tarは引数のワイルドカードに対応していないので、tar tf と grep を組み合わせる必要がある。
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
- ファイルのパーミッション等は復元されないので注意
 - 複数のファイルを指定した場合は連結して出力されるが、順番が指定した通りとは限らないので、若干使いづらい