web-dev-qa-db-ja.com

作業ディレクトリではなく、ターゲットディレクトリを基準にしてZipファイル内のディレクトリを作成する方法

ディレクトリを変更できないスクリプトからZipコマンドを呼び出しています。データがあるディレクトリからdata/kit123/にあるもののZipファイルを作成する必要がありますが、Zipのコンテンツはkit123のコンテンツのみで、kit123

これはディレクトリ構造です

myworkingdir
    data
        kit123
            kitpart1
                file.xcf
                anotherfile.xcf
            kitpart2
                ...
        kit124
            ...

スクリプトはmyworkingdirで実行され、ディレクトリを変更できません。

電話したら

Zip -r kit123.Zip data/kit123

次に、Zipファイルの構造は

data
    kit123
        kitpart1
            file.xcf
            anotherfile.xcf
        kitpart2

しかし、私はそれが欲しいです

kit123
    kitpart1
        file.xcf
        anotherfile.xcf
    kitpart2

これを達成するために使用できるZipオプションはありますか?作業ディレクトリに依存するのは奇妙に思えます

-jではないことを知っています。 kit123内の構造を破壊する

22
Nathan

コメントでメモしているように、スクリプトでディレクトリを変更する方法がわかったので、Zipの相対パスに関する状況を説明します。

おそらく、ターミナルとcdからkit123を開くのが最も簡単でしょう。ターゲットディレクトリを作業ディレクトリにする必要があります。ホームディレクトリのベースからコマンドを実行することはできません。または、/home/$USER/..のすべてのパスを選択します。-jオプションを使用すると、異なるレベルのパス削除を指定できるtarオプション--stripと実際には同等のものがないため、すべてのパスが削除されます。

したがって、ターゲットディレクトリ(kit123)に移動して、次のように入力してください。

Zip -r kit123.Zip *

これは再帰的に(-r)すべての(*)ファイルとファイルのディレクトリを現在のディレクトリ(kit123)に保存し、相対パス(-p)が自動的に保存されます-jオプションが存在しない限り、ディレクトリ構造は希望どおりになります。 Kit123およびサブフォルダー(kitpart1)とそのファイルが存在します:

kit123
    kitpart1
        file.xcf
        anotherfile.xcf
    kitpart2

unzip -l zipfile.Zipを使用して、Zipファイルの内容を確認できます。

Zipで使用できる他のオプションの詳細については、man Zipおよび buntu manpage online を参照してください。

15
user76204