Wenn ich das richtig verstehe, versuchen Sie, die Dateien und Ordner in einem bestimmten Ordner zu archivieren, ohne jedoch den Stammordner einzuschließen.
Beispiel:
/test/test.txt
/test/test2.txt
Wobei test.txt und test2.txt im zip gespeichert wären, aber nicht / test /
Sie könnten in das Verzeichnis / test / cd dann so etwas wie ausführen,
zip -r filename.zip ./*
Welches würde ein Archiv im gleichen Ordner mit dem Namen filename.zip erstellen. Oder wenn Sie es von außerhalb des Ordners ausführen, den Sie ausführen könnten,
zip -r test.zip test/*
Das / * ist der Teil, der nur den Inhalt des Ordners anstelle des gesamten Ordners enthält.
Bearbeiten: OP wollte mehrere Reißverschlüsse, Lösung endete ein bisschen ein Hack, ich bin gespannt, ob es einen besseren Weg gibt, dies zu tun.
for d in */ ; do base=$(basename "$d") ; cd $base ; zip -r $base * ; mv "${base}.zip" .. ; cd .. ; done;
for d in */ ; do base=$(basename "$d") ; zip -rj "${base}.zip" "$d" ; done;
zip -r test.zip test/*
funktioniert nicht. Gibt es einen richtigen Weg, um dies von außerhalb des Verzeichnisses zu erreichen?Verwenden Sie die Option
-j
oder--junk-paths
in Ihrem zip-Befehl.Von der Zip-Manpage :
quelle
Wie wäre es mit diesem Befehl?
quelle
cd
. Ich hatte gehofft, dass es eine Möglichkeit gibt, den gespeicherten Pfad genauer anzugeben.Hoffe das hilft.
Es hält die Haupt-Shell im selben Verzeichnis und ändert nur das Verzeichnis der Sub-Shell, die nach dem Befehl stirbt.
quelle