私の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)