ubuntuusers.de

Archive per Shell entpacken und Ordnerstruktur aus Dateiname

Status: Gelöst | Ubuntu-Version: Ubuntu MATE 20.04 (Focal Fossa)
Antworten |

Chemnitzsurfer

Anmeldungsdatum:
26. April 2011

Beiträge: 882

Wohnort: Chemnitz

Moin, ich habe hier beim aufräumen eine alte HDD mit alten Backups gefunden, wo ich gerne schauen würde ob da noch was wichtiges drauf ist. In einen Ordner sind bis zu hundert ZIP Archiven (alte Windows Backups mit Bordmitteln von Win7 erstellt). Wie kann ich die am einfachsten auf einer externen Platte entpacken und dabei die alte Ordnerstruktur aus dem Dateiname automatisch nachbilden? ( Die Daten heisen im ZIP Archiv z.B. "F/XYZ/text.txt" ⇒ es soll also ein Ordner F erstellt werden darin der Ordner XYZ und darin die Datei text.txt ) Danke.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13175

unzip erstellt automatisch die Ordner, die im Archiv enthalten sind.

Aus der Manpage:

The default behavior (with no options) is to extract into the current directory (and subdirectories below it) all files from the specified ZIP archive.

Vielleicht ist es aber sinnvoller, pro Archiv ein Verzeichnis zu erstellen. Das könntest Du z.B. so machen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/sh

ziel=/pfad

set -e

for a in *.zip; do
  zip=$(realpath "$a")
  dir=${a##*/}
  dir="$ziel/${dir%.zip}"
  mkdir "$dir" && ( cd "$dir" && unzip "$zip" )
done

Chemnitzsurfer

(Themenstarter)

Anmeldungsdatum:
26. April 2011

Beiträge: 882

Wohnort: Chemnitz

Problem ist, dass es in den Archiven keine Ordner gibt und das das Archivprogramm von Mate mit den "/" in den Dateinamen nicht klar kommt

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11248

Wohnort: München

Windows erlaubt eigentlich keine / in Dateinamen: https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions Kannst du mal zeigen, wie der Inhalt von so einem Archiv aussieht?

unzip -l my.zip 

Oder mit Python3:

python3 -m zipfile -l my.zip 

Chemnitzsurfer

(Themenstarter)

Anmeldungsdatum:
26. April 2011

Beiträge: 882

Wohnort: Chemnitz

Wie gesagt, das sind die ZIPs die das Backupprogramm von Win7 vor 8 Jahren erstellt hat, mit so wunderschönen Dateinamen wie "F\introductionpackage-4.7.0\t3lib\cache\backend\class.t3lib_cache_backend_filebackend.php" , anbei mal ein screenshot. Jetzt suche ich halt einen weg ca. 300GB ZIP Files mit Dateinamen die es eigentlich nicht geben dürfte so zu verarbeiten, das ich die Daten nach Ordnern sortiert und mit normalen Dateinamen habe. ( eine Win7 VM frist das Backup leider nicht und gibt nur eine Fehlermeldng aus.

Bilder

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13175

Chemnitzsurfer schrieb:

Jetzt suche ich halt einen weg ca. 300GB ZIP Files mit Dateinamen die es eigentlich nicht geben dürfte so zu verarbeiten, das ich die Daten nach Ordnern sortiert und mit normalen Dateinamen habe.

Dann ist vermutlich das Beste, wenn Du ein kleines Programm in der Programmiersprache Deiner Wahl schreibst, das jeweils ein Archiv öffnet, durch die Einträge im Archiv geht und die Dateien in eine passende Ordnerstruktur auspackt. Das könnte sogar mit einem Shell-Skript gehen.

Chemnitzsurfer

(Themenstarter)

Anmeldungsdatum:
26. April 2011

Beiträge: 882

Wohnort: Chemnitz

Ich habe jetzt nochmal eine neue win7 vm angelegt und mit der konnte ich jetz auf die Backups zugreifen.

Antworten |