次のコマンドを使用してzipファイルを作成する必要があります。
zip /dir/to/file/newZip /data/to/zip/data.txt
これは機能しますが、作成されたzipファイルは、生ファイルへのディレクトリを模倣したディレクトリ構造を作成します。不要なフォルダがたくさんあります。
manページやGoogleハントをざっと見ただけでは、答えは見つかりませんでした。
次のコマンドを使用してzipファイルを作成する必要があります。
zip /dir/to/file/newZip /data/to/zip/data.txt
これは機能しますが、作成されたzipファイルは、生ファイルへのディレクトリを模倣したディレクトリ構造を作成します。不要なフォルダがたくさんあります。
manページやGoogleハントをざっと見ただけでは、答えは見つかりませんでした。
回答:
使用できます-j
。
-j
--junk-paths
Store just the name of a saved file (junk the path), and do not
store directory names. By default, zip will store the full path
(relative to the current directory).
オプション-j
と一緒に使用しても機能しません-r
。
したがって、その回避策は次のようになります。
cd path/to/parent/dir/;
zip -r complete/path/to/name.zip ./* ;
cd -;
またはインラインバージョン
cd path/to/parent/dir/ && zip -r complete/path/to/name.zip ./* && cd -
画面に出力を表示さ/dev/null
せたくない場合は、出力先を指定できcd -
ます
cd path/to/parent/dir/ && zip -r ../../../../name.zip ./* && cd -
cd path/to/parent/dir/
あなたは../
簡単にダブルドットの数を計算することができます。
ある程度関連している-私はディレクトリに対して同じことをする解決策を探していました。残念ながら-j
オプションはこのため機能しません:(
これを行う方法に関する良い解決策は次のとおりです。https: //superuser.com/questions/119649/avoid-unwanted-path-in-zip-file
unzip
ファイルをどこにも排出しないするディレクトリを圧縮するとき、親ディレクトリをアーカイブに保持すると、後でアーカイブファイルを解凍するときに現在のディレクトリがポイ捨てされるのを防ぐのに役立ちます。
したがって、すべてのパスを保持しないようにするには、また-jと-rを一緒に使用できないため(エラーが発生します)、代わりに次のようにします。
cd path/to/parent/dir/;
zip -r ../my.zip ../$(basename $PWD)
cd -;
の ../$(basename $PWD)
親ディレクトリを保持魔法です。
だから今unzip my.zip
、あなたのすべてのファイルを含むフォルダを与えるでしょう:
parent-directory
├── file1
├── file2
├── dir1
│ ├── file3
│ ├── file4
現在のディレクトリを解凍されたファイルで散らかす代わりに:
file1
file2
dir1
├── file3
├── file4
-jrm
オプションを使用してファイルとディレクトリ構造を削除するだけです
zip -jrm /path/to/file.zip /path/to/file