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


25

ディレクトリを変更できないスクリプトから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内の構造を破壊する


ああ、私はディレクトリを変更する方法を理解していませんでした(Pythonで)私はちょうど組織化されたパーミッションを持っていませんでした。ただし、zipにそのようなオプションがあるかどうかは知りたいです。
ネイサン

回答:


18

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

これは、端末と開くことが一番簡単でしょうcdkit123。あなたは自分のホームディレクトリのベースからのコマンドを実行することはできませんか、それはすべてのパスピックアップしますディレクトリ-ターゲットディレクトリをあなたの作業を行う必要があり/home/$USER/..、あなたが使用している場合は-jそこにISNとして、オプションを、それがすべてのパスを取り除きますが実際には、--stripさまざまなレベルのパス削除を指定できるtarオプションに相当するものではありません。

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

zip -r kit123.zip *

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

kit123
    kitpart1
        file.xcf
        anotherfile.xcf
    kitpart2

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

で利用可能な他のオプションのzip詳細についてはman zip、およびオンラインUbuntuマンページを参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.