Unix komprimieren sub-Verzeichnis nicht darunter übergeordnete Verzeichnis
Ich möchte eine zip-sub Verzeichnis und schicken Sie es an anderer Stelle, das problem ist, wenn ich die zip-Befehl enthält es auch alle unerwünschten Schichten von Verzeichnissen, die ich nicht will.
z.B.
zip -r /new.zip /Unwanted1/Unwanted2/wanted1/wanted2/file.txt
###unzipped produces the following
/Unwanted1/Unwanted2/wanted1/wanted2/file.txt
###I want
/wanted1/wanted2/file.txt
update: Das Verzeichnis, ich will zip hat viele verschachtelte Verzeichnisse, damit die -r. Auch wäre es Klasse, Angebot mit absoluten Pfaden, die alte Lösung verwendet, um die cd über den Ort, aber ich habe gerade nicht wirklich gefällt. Vielleicht ist das die beste (einzige) Möglichkeit.
- Die
-r
bedeutet rekursiv. Wenn Sie wirklich brauchen, um zu verwenden, dann sollten Sie Lesen, auf den zip-Optionen zum ausschließen. Wenn Sie nur wollen, um eine zip-Datei, cd in den entsprechenden parent-dir (nach deinem Beispiel) ./Unwanted1/Unwanted2 und dannzip new.zip wanted/file.txt
. Das heißt, ich glaube nicht, dass es eine zip-option, die heißt "wirf den ersten n-Schichten Unterverzeichnis info auf der input-Dateiname'. Viel Glück. - Hast du da bearbeitet dein Beispiel, welche änderungen das Spiel eine ganze Menge. Menschen don ' T wollen in der Regel absolute Pfade wie die. Möglicherweise gibt es mehr-Pfad Trimm - /control-Optionen in 'zip', aber ich bezweifle es. Lesen Sie die man-Seite. Oder wechseln Sie zu 'tar' und Lesen, die (ebenso lange) man-Seite. Und Sie immer noch nicht brauchen -r aus, wenn Sie das hinzufügen einer einzigen Datei, egal wie tief.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie ändern Sie die Verzeichnisse an, wo Sie starten wollen, oder vielleicht gibt es eine option, um 'zip' zu tun, dass für Sie. Wenn du zu faul bist zu Lesen, durch die Unmenge von Optionen in der man-page, wie ich bin, einfach nur 'cd' erste, noch in einem Skript. Oder Sie umschließen das ganze in Klammern, ohne sich auf die shell-oder script-Arbeitsverzeichnis:
Oder, da Sie mit -r du vermutlich mehr wollen als nur file.txt also:
Oder verwenden Sie pushd/popd springst in/out:
Das funktioniert in sh/bash/csh/tcsh.
Einfachste, idiomatische Weise:
Nun zip -, tar -, rar -, cpio und Freunde haben alle Optionen zu verwalten die gleiche, aber Sie unterscheiden sich von version zu version und sicher aus dem Archiv-Dienstprogramm, um Archiv-Dienstprogramm. Ich schlage vor, Sie lernen zu arbeiten mit der shell, um die Arbeit zu tun, und Sie können jedes Archiv-format, die Sie wünschen
Einen anderen Weg:
zip
weglassen übergeordneten Ordner Struktur, es scheint nicht der bessere Weg zu sein, dass diese. Beide Flaggen-j
oder-D
nicht tun, was wir wollten, die auf eine komplexe sub-Ordner-Struktur.Sowie eine einfache Möglichkeit, um vielleicht zu tun
Aber ich weiß nicht, was Ihre situation ist. Vielleicht sind Sie notwendig, um aus dem base-Verzeichnis? Auch das "-r" option wird verwendet, wenn Sie wollen rekursiv Durchlaufen von Verzeichnissen - das Beispiel, das Sie zur Verfügung gestellt wird, mithilfe einer Datei.