web-dev-qa-db-ja.com

抽出されたフォルダー名がZipファイル名と一致しないbashでファイルを解凍します

Zipファイルを解凍するシェルスクリプトがあり、その内容は常に1つのフォルダーになります。

私のコードでは、Zipファイルの名前がフォルダー名を反映していると想定していました(たとえば、testという名前のフォルダーは常にtest.Zipとして圧縮されます)。したがって、Zipファイルからフォルダ名を抽出していました。

snapsというフォルダがphotos.Zipとして圧縮されているという障害にぶつかりました。ここで、Zipファイルからフォルダー名を抽出すると、間違ったフォルダー名になります。

解凍後に正しいフォルダ名を取得するにはどうすればよいですかsnapsphotos.Zip

4
smokinguns

それを行う方法を見つけました!

unzip -l photos.Zip | awk'NR == 4 {print $ 4} '| sed's //// '

0
smokinguns

私はすべての解凍のニーズに常にdtrx(正しい抽出を行う)を使用します。スクリプトは圧縮形式を検出し、適切なパラメータを使用して適切なプログラムを呼び出します。私はそれを強くお勧めします、そしてZipファイルに従って名付けられたフォルダに解凍するためのフラグがあります。

dtrxはパッケージマネージャーにある可能性が高く、多くの頭痛の種を軽減します。

0
Yab

独自のディレクトリを作成し、unzip -jを使用して、アーカイブ内のすべてのファイルがその1つのディレクトリに抽出されるようにすることをお勧めします。