複数のファイルを含むフォルダがあります。
フォルダ
- アーティファクト1.app
- アーティファクト2.ext2
- アーティファクト3.ext3
- ...
cd
私の目標は、フォルダdirを含まず、そのフォルダ外のファイルをコマンドを使用せずに圧縮することです。
zip -r ./folder/artifact.zip ./folder/artifact1.app
このコマンドには、最後のzipのフォルダディレクトリが含まれています。どのようなヒントがありますか?
ベストアンサー1
ディレクトリを指定せずにすべてのファイルをその名前で保存する場合は、このオプションをfolder
使用できます。-j
zip -j folder/artifact.zip folder/artifact1.app folder/artifact2.ext2 folder/artifact3.ext3
または
zip -j folder/{artifact.zip,artifact1.app,artifact2.ext2,artifact3.ext3}
folder/subdir/foo
サブディレクトリにファイルがある場合、アーカイブにディレクトリコンポーネントはありませんfoo
。
ただし、ディレクトリを変更する方が簡単かもしれません。上記の中かっこ法とほぼ同じ量の入力が必要です。これにより、サブディレクトリにファイルを含めると、そのファイルは変更されたディレクトリへの相対パスを持ちます。たとえば。folder/subdir/foo
subdir/foo
(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
インタラクティブな使用の場合、コマンドを実行するとシェルが別のディレクトリにあることが認識されないため、この方法でシェルの完成が失われますzip
。この問題を解決するには、cd
コマンドを別々に実行します。以前のディレクトリに簡単に戻るには、pushd
およびを使用できますpopd
。
pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd
zipファイルに保存されているパスを完全に制御するには、シンボリックリンクフォレストを作成します。特に明記しない限り、zip
シンボリックリンクは保存されません。