1
1

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.

【unzip】zipファイル内のディレクトリ区切り文字がバックスラッシュなものから任意のファイルのみを解凍する方法

Posted at

もしかすると当たり前のことかもしれませんが、フィーリングで調べても答えがなかなか見つからなかったので備忘目的でメモします。

事の起こり

unzipコマンドで特定のファイルのみを解凍したい時

下記のようなzipファイルがある場合

hoge.zip
$ zipinfo -1 hoge.zip
aaa/bbb/ccc.txt
ddd/eee/fff.jpg
ggg/hhh/iii.log

unzip {解凍対象zip} {取り出したいファイルパス} で実現できる。

$ unzip hoge.zip aaa/bbb/ccc.txt

がしかし、zipファイル内のディレクトリの区切りがバックスラッシュであった場合

hoge_bs.zip
$ zipinfo -1 hoge_bs.zip
aaa\bbb\ccc.txt
ddd\eee\fff.jpg
ggg\hhh\iii.log

同じ調子でコマンドを入れるとエラーになってしまう

$ unzip hoge_bs.zip aaa\bbb\ccc.txt
Archive:  hoge_bs.zip
caution: filename not matched:  aaabbbccc.txt

#試行錯誤

シングルクォートで囲めばいいのか?と思うもこれもダメ

$ unzip hoge_bs.zip 'aaa\bbb\ccc.txt'
Archive:  hoge_bs.zip
caution: filename not matched:  aaa\bbb\ccc.txt

実は展開時にパスがスラッシュに変換されているのか?と試してみるもこれもダメ

$ unzip hoge_bs.zip 'aaa/bbb/ccc.txt'
Archive:  hoge_bs.zip
caution: filename not matched:  aaa/bbb/ccc.txt

上手くいった方法

バックスラッシュを2つにしてあげると上手くいきました

$ unzip hoge_bs.zip 'aaa\\bbb\\ccc.txt'
Archive:  hoge_bs.zip
warning:  hoge_bs.zip appears to use backslashes as path separators
  inflating: aaa/bbb/ccc.txt

こうやってまとめてみると、これって常識なんじゃないかと反省し始めています……

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?