Ich habe einen Ordner, der mehrere Dateien enthält
Mappe
- artekt1.app
- artefakt2.ext2
- artefakt3.ext3
- ...
Mein Ziel ist es, die Datei von außerhalb dieses Ordners zu komprimieren (also ohne cd
Befehl zu verwenden), ohne das Ordnerverzeichnis einzuschließen.
zip -r ./folder/artifact.zip ./folder/artifact1.app
Dieser Befehl enthält das Ordnerverzeichnis in der endgültigen Zip-Datei. Irgendwelche Hinweise?
Verwandte Frage: Komprimieren Sie den Inhalt eines Ordners, ohne den Ordner selbst einzuschließen
-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?Antworten:
Wenn Sie alle Dateien
folder
unter ihrem Namen ohne Verzeichnisangabe speichern möchten , können Sie die-j
Option verwenden.oder
Wenn Sie Dateien in Unterverzeichnissen haben, haben diese auch keine Verzeichniskomponente im Archiv, z. B.
folder/subdir/foo
werden sie im Archiv als gespeichertfoo
.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 gespeichertsubdir/foo
.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 dencd
Befehl separat aus. Um einfach zum vorherigen Verzeichnis zurückzukehren, können Siepushd
und verwendenpopd
.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.quelle
folder
) explizitzip -j folder/*
.profile
) nicht in das Archiv aufgenommen. Ändern Sie stattdessen das aktuelle Arbeitsverzeichnis und geben Sie.
als zu archivierende Dateicd folder && zip -r ../folder.zip .