親ディレクトリがないディレクトリのすべてのファイルとサブフォルダを圧縮します。

親ディレクトリがないディレクトリのすべてのファイルとサブフォルダを圧縮します。

次のフォルダ構造があります

folder
|
|--foo.txt
|
|--sub_folder
   |
   |--bar.txt

zipアーカイブにルートフォルダを含めずにフォルダ(ファイルとサブフォルダ)の内容を圧縮したいと思います。

私はコマンドを試しました

zip -r package.zip folder

ただし、これにはルートフォルダが含まれます。また、次の形式を試しました。

zip -j -r package.zip folder

ただし、これによりすべてのディレクトリ構造が平坦化され、ファイルのみが含まれます。内部ディレクトリ構造を維持しますが、親フォルダを無視する方法は?

ベストアンサー1

zipパスは現在のディレクトリ(呼び出し時)に基づいて保存されるため、変更する必要があります。

(cd folder && zip -r "$OLDPWD/package.zip" .)

&&ディレクトリが正しく変更された場合にのみ実行し、角かっこzipはサブシェルのすべてのエントリを実行するため、現在のディレクトリは最後に復元されます。OLDPWD計算を避ける相対パスを使用してくださいpackage.zip

おすすめ記事