Oder verwenden Sie --transform/ --xform, wie von Magnus vorgeschlagen :tar -cf /path/to/output.tar -C /path/to/input-directory . --xform='s!^\./!!'
n.st
Antworten:
6
Das tust du nicht.
name=${PWD##*/}
cd ..
tar czf "$name.tar.gz" "$name"
(Hinweis: Dies funktioniert nicht, wenn in Ihrer Shell die Verfolgung symbolischer Links des aktuellen Verzeichnisses aktiviert ist und auf das aktuelle Verzeichnis über einen symbolischen Link zugegriffen wird.)
Ja, das haben Sie nicht gefragt, aber das sollten Sie tun. Archive, die viele Dateien im aktuellen Verzeichnis erweitern, sind ärgerlich: Sie müssen jeder Person, die das Archiv entpackt, ein Zielverzeichnis für die Datei erstellen. Wenn sie diese versehentlich in ein nicht leeres Verzeichnis entpacken, ist dies schwierig Aufräumen. In den meisten Fällen sollte ein Archiv ein einzelnes Verzeichnis auf oberster Ebene erstellen, dessen Name der Basisname des Archivs ist.
Verstanden. Wenn ich mich richtig erinnere, ist es nur sehr ärgerlich, einen zusätzlichen Schritt ausführen zu müssen, um ein Archiv in ein bestimmtes Verzeichnis zu entpacken (z. B. tar xzvf archive.tar.gz && mv archive/* /outputvs. unzip archive.zip -d /output)
Naftuli Kay
9
Der Punkt wird angezeigt, weil tardie Pfadstruktur so erstellt wird, wie Sie sie in den Argumenten angegeben haben. Also wie du gegeben hast . Als Quelle wird auch das Archiv in derselben Struktur erstellt.
Sie können dies versuchen und überprüfen:
tar -czvf ../myarchive.tar.gz *
Aktualisierung der Antwort mit Hilfe des Kommentars von n.st.
--transform
/--xform
, wie von Magnus vorgeschlagen :tar -cf /path/to/output.tar -C /path/to/input-directory . --xform='s!^\./!!'
Antworten:
Das tust du nicht.
(Hinweis: Dies funktioniert nicht, wenn in Ihrer Shell die Verfolgung symbolischer Links des aktuellen Verzeichnisses aktiviert ist und auf das aktuelle Verzeichnis über einen symbolischen Link zugegriffen wird.)
Ja, das haben Sie nicht gefragt, aber das sollten Sie tun. Archive, die viele Dateien im aktuellen Verzeichnis erweitern, sind ärgerlich: Sie müssen jeder Person, die das Archiv entpackt, ein Zielverzeichnis für die Datei erstellen. Wenn sie diese versehentlich in ein nicht leeres Verzeichnis entpacken, ist dies schwierig Aufräumen. In den meisten Fällen sollte ein Archiv ein einzelnes Verzeichnis auf oberster Ebene erstellen, dessen Name der Basisname des Archivs ist.
quelle
tar xzvf archive.tar.gz && mv archive/* /output
vs.unzip archive.zip -d /output
)Der Punkt wird angezeigt, weil
tar
die Pfadstruktur so erstellt wird, wie Sie sie in den Argumenten angegeben haben. Also wie du gegeben hast . Als Quelle wird auch das Archiv in derselben Struktur erstellt.Sie können dies versuchen und überprüfen:
Aktualisierung der Antwort mit Hilfe des Kommentars von n.st.
quelle
*
Glob stimmt nicht mit versteckten Dateien überein.füge besser ^ vor dem vorhergehenden hinzu.
ODER alle "/" im vollständigen Pfadnamen im Archiv werden entfernt, es sei denn, "/" ist das Ende des vollständigen Pfadnamens.
quelle