
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 app
und . 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.skin
magefoler
Das Endergebnis, das ich suche, stammt aus der ZIP-Datei, die ich /mage
wie 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-master
in 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
.
- Verwenden Sie FUSE, wie Gilles hier vorschlägt:Wie kann ich erzwingen, dass beim Extrahieren von Unzip/Zip kein Unterverzeichnis erstellt wird?
- Verwenden Sie das Tool
zipnote
, um die Dateien innerhalb des ZIP-Archivs zu verschieben, bevor Sie sie extrahieren.