extrahieren Sie nur den Inhalt eines bestimmten Ordners aus einem komprimierten Archiv in ein bestimmtes Verzeichnis

extrahieren Sie nur den Inhalt eines bestimmten Ordners aus einem komprimierten Archiv in ein bestimmtes Verzeichnis

Dies ist sehr nah an der SOWie extrahiere ich nur einen bestimmten Ordner aus einem ZIP-Archiv in ein bestimmtes Verzeichnis? Ich brauche etwas Ähnliches, aber ich erhalte immer den Ordner mit dem Inhalt, nicht nur den Inhalt. Folgendes wurde vorgeschlagen:

 #note $2 is passed in and would be == "magefoler"
 unzip /srv/file.zip "$2-master/*" -d /srv/www/mage/

Was ich tun muss, ist, eine Zip-Datei mit dieser Struktur zu nehmen

file.zip
 |-magefoler-master/
 |-magefoler-master/app/*tons of files
 |-magefoler-master/skin/*tons of files

und ich muss es in einen anderen Ordner verschieben, aber ich kann das nicht verschieben magefoler, ich möchte nur die Ordner appund . Das bedeutet nicht, dass es immer diese beiden Ordner sein werden, sondern nur, dass ich alle untergeordneten Inhalte, Dateien oder Ordner in dem herausholen muss. Was vermieden werden soll, ist, alles in einen Ordner zu exportieren und es dann einfach von dort zu verschieben.skinmagefoler

Das Endergebnis, das ich suche, stammt aus der ZIP-Datei, die ich /magewie folgt in den Ordner ausgegeben habe:

/srv/www/mage/
     |--/mage/app/*tons of files
     |--/mage/skin/*tons of files

Antwort1

Kannst du nicht einfach hierher entpacken:

$ unzip /srv/file.zip "$2-master/*" -d /srv/www/

Und verschieben/benennen Sie den Ordner dann magefoler-masterin mage:

$ mv /srv/www/magefoler-master /srv/www/mage

Alternativen?

Als ich in der Vergangenheit genau dieses Problem untersuchte, konnte ich nur zwei weitere Methoden finden, um so etwas zu tun, ohne auf die Verwendung von zurückgreifen zu müssen mv.

  1. Verwenden Sie FUSE, wie Gilles hier vorschlägt:Wie kann ich erzwingen, dass beim Extrahieren von Unzip/Zip kein Unterverzeichnis erstellt wird?
  2. Verwenden Sie das Tool zipnote, um die Dateien innerhalb des ZIP-Archivs zu verschieben, bevor Sie sie extrahieren.

verwandte Informationen