zipアーカイブから特定のフォルダーのみを特定のディレクトリに抽出する方法は?


59

zip形式のアーカイブから特定のフォルダーを特定のフォルダーに抽出するにはどうすればよいですか?

使ってみた

unzip "/path/to/archive.zip" "in/archive/folder/" -d "/path/to/unzip/to"

しかし、それは、解凍したいパスにフォルダを作成するだけで、それ以外は何もしません。

回答:


60
unzip <target-zip-file> '<folder-to-extract/*>' -d <destination-path> 

EL 6で正常に動作します


3
このEL 6とは何ですか?
ゼルダ

2
Enterprise Linux 6(RHEL6)-Red Hat。
slm

これも機能します。基本的にはマークアドラーの回答と同じですが、少し異なります。
エンコウヤミ14

引用の@Enkouyami Minusの違いは、まったく同じように見えます。
カミロマーティン

1
@Enkouyami二重引用符のバックスラッシュは文字をエスケープするため(アスタリスクはエスケープされますが、タイプミスだと思います)、単一引用符ではバックスラッシュは解釈されません。リテラルのバックスラッシュが必要な場合は、"\\"使用されます(そうでない場合は、どの文字が特別なエスケープかを常に覚えておく必要があります)。したがって、著者が「グロブ文字を引用する」ことを意味する場合、引用の違いになります(不要)。いずれにせよ、そのような単一のバックスラッシュはタイプミスです。
カミロマーティン

39

試してください:

unzip /path/to/archive.zip 'in/archive/folder/*' -d /path/to/unzip/to

4
これでしたか?caution: filename not matched: foldername/\*実行unzip $repozip "$2-master/\*" -d /srv/www/magento/する$2と、zip内のフォルダー名がどこにあるかを取得します。すべてのファイルとフォルダーを引き出したい
-jeremy.bass

10
\なしで機能しました"path/*"
アレックス14年

8
パス「in / archive / folder /」を保持しない「in / archive / folder / *」の内容を抽出する方法はありますか?私が使用して終了mv、私はそれらを必要なファイルを取得するために、その後。
ジェリーガルシウ14年

6
-jそのために使用します。
マークアドラー14年

4
-jすべてのパス情報を削除し、すべてのファイルがターゲットフォルダーに入ります。パスの共通部分のみを削除する方法はありますか?zipに似てい-rます。
ボブスタイン

6

既存の2つの答えはどちらも正しいですが、ターゲットディレクトリを指定するのは少し難しいため、より明確にする必要があります。

/target/root/元の解凍アクションのターゲットディレクトリであるとしましょう。例えば:

unzip -qq src.zip -d "/target/root/"

次に、/target/root/unzipが機能する方法として、特定のサブディレクトリのみを抽出する場合でも、後でターゲットディレクトリと同じものを使用する必要があります。

unzip -qq src.zip "sub/dir/*" "/target/root/"

結局のところ、ルールは実際には単純であり-dオプションに同じターゲットルートディレクトリを使用します

ところで、-qqオプションは、unzipが本当に静かになるようにすることです。気軽に削除してください。


参考:<kbd> unzip -qq 2.3.zip "magento2-2.3 / vendor / *" "vendor /" </ kbd>を実行し、<kbd>注意:ファイル名が一致しません:vendor / `</ kbd>。これはbashのubuntuインストールにあります。私はめったに解凍せず、おそらく他の何か間違ったことをしました...
クリスK
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.