Windowsで生成されたZIPをLinuxに変換する(内部パスの問題)

Windowsで生成されたZIPをLinuxに変換する(内部パスの問題)

私のWindowsコンピュータで(私は制御できません).zipを作成しました。 zipファイルには、解凍時に保存する必要があるパスが含まれています。

ただし、解凍すると、すべてのファイルが次のように終了します。
unzip_dir/\window\path\separator\myfile.ext

オプションがあるものとないものすべて試してみました-j。私の問題は私です必要以下のパス情報です\window\path\separator\。解凍時にこのファイル構造を作成する必要があります。

スクリプトからファイルを簡単に作成しmvて反転できます\が、/ターゲットパスディレクトリが存在しないというエラーが発生します。現在の回避策は、mkdir -pパス(変換\/)を選択し、ファイルcpをそのパスに転送することです。

ただし、ファイルが多すぎるため、mkdir -pこれらのファイルごとに重複したステートメントが原因で作業が遅くなる可能性があります。

Windowsパスを含むzipファイルをLinuxパスに変換するよりエレガントな方法はありますか?

ベストアンサー1

7z rnスラッシュを含むようにアーカイブのファイル名を変更するために使用されます。その後、アーカイブを抽出するとディレクトリが作成されます。

ファイル名を変更するには、スラッシュを含むアーカイブのファイルパスを一覧表示し、awkバックスラッシュをスラッシュに変更するなどの代替文字列のリストを生成します。

7z rn windows.zip $(7z l windows.zip | grep '\\' | awk '{ print $6, gensub(/\\/, "/", "g", $6); }' | paste -s)

おすすめ記事