Wie erstelle ich ein ZIP-Archiv, das nur die Struktur des Zielverzeichnisses und darunter beibehält?

7

Ich muss ein Zip-Archiv erstellen, in dem das entpackte Ergebnis die Verzeichnisstruktur vom angegebenen Verzeichnis abwärts beibehält . Ich muss dies auch tun, ohne tatsächlich in das Verzeichnis zu wechseln.

Meine Frage ist ähnlich zu diesem . Nachdem ich viel zu diesem Thema gelesen habe, habe ich nicht das Gefühl, dass irgendetwas meine Frage vollständig beantwortet hat.

Zum Beispiel habe ich:

/ tmp
    / sub_dir
        / pertinent_dir
            / sub_folder_1 /
                stuff.pdf
                stuff.xls
            / sub_folder_2 /
                stuff.pdf
                stuff.xls
            / sub_folder_3 /
                stuff.pdf
                stuff.xls

Ich muss in der Lage sein, zip -r /tmp/sub_dir/pertinent_dir.zip /tmp/sub_dir/pertinent_dir/*so zu arbeiten, dass das Ergebnis nur pertinent_dirund darunter enthält . Auch dies muss ich unabhängig von meinem aktuellen Verzeichniskontext tun . Ich habe es versucht -j, aber das scheint nicht zu funktionieren. Vielleicht ist es nicht möglich. Fehlt mir etwas?

bescheidener_coder
quelle
1
Sind Sie dagegen, innerhalb einer Subshell zum Zielverzeichnis zu wechseln und das Zip innerhalb derselben Subshell durchzuführen?

Antworten:

7
sh -c "cd /tmp/sub_dir/pertinent_dir/../  \
&& zip -r pertinent_dir.zip pertinent_dir/*"
K1773R
quelle
6

Sie könnten ein Glas anstelle eines Reißverschlusses verwenden:

jar cfM /tmp/sub_dir/pertinent_dir.zip -C /tmp/sub_dir pertinent_dir
botkop
quelle
2
Sie sollten wahrscheinlich erwähnen, dass dies jarTeil der Java-Installation ist und kompatible Zip-Dateien erstellt, die mit Unzip usw. extrahiert werden können.
Benutzer unbekannt