Wenn Sie alle Dateien folder
unter ihrem Namen ohne Verzeichnisangabe speichern möchten , können Sie die -j
Option verwenden.
zip -j folder/artifact.zip folder/artifact1.app folder/artifact2.ext2 folder/artifact3.ext3
oder
zip -j folder/{artifact.zip,artifact1.app,artifact2.ext2,artifact3.ext3}
Wenn Sie Dateien in Unterverzeichnissen haben, haben diese auch keine Verzeichniskomponente im Archiv, z. B. folder/subdir/foo
werden sie im Archiv als gespeichert foo
.
Aber es wäre wahrscheinlich einfacher, in das Verzeichnis zu wechseln. Es ist fast genau die gleiche Menge an Eingabe wie die Klammermethode aboe. Wenn Sie dies tun und Dateien in Unterverzeichnisse aufnehmen, haben sie ihren relativen Pfad aus dem Verzeichnis, in das Sie geändert haben, z. B. folder/subdir/foo
werden sie als gespeichert subdir/foo
.
(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
Bei interaktiver Verwendung verlieren Sie auf diese Weise die Shell-Vervollständigung, da die Shell nicht erkennt, dass Sie sich beim Ausführen des zip
Befehls in einem anderen Verzeichnis befinden . Um dies zu beheben, geben Sie den cd
Befehl separat aus. Um einfach zum vorherigen Verzeichnis zurückzukehren, können Sie pushd
und verwenden popd
.
pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd
Wenn Sie die vollständige Kontrolle über die in einer Zip-Datei gespeicherten Pfade haben möchten, können Sie eine Gesamtstruktur symbolischer Links erstellen. Sofern nicht anders angegeben, werden zip
keine symbolischen Links gespeichert.
-j
dies zutreffen würde, und dass alle Ordner in einem einzigen Verzeichnis auf Stammebene innerhalb der ZIP-Datei komprimiert würden. Das ist nicht das, wonach Sie suchen, oder?