Skript zum entpacken und Daten auslesen

xgame

Cadet 4th Year
Registriert
Jan. 2013
Beiträge
83
Hallo zusammen,

ich bin neu in der Linux Welt und versuche mich in Sachen Bash Programmierung.
Dazu habe ich mir ein kleines Testszenario erstellt um zu üben. Aber ich komme nicht so richtig weiter und hoffe ihr könnt mir etwas weiterhelfen.

Im Verzeichnis "/home/bla/folderA“ befinden sich 12 ZIP-Dateien.
Alle ZIP-Dateien haben diesen Aufbau „Bla_DE_Blubb_2017_1.zip“ – dabei ist die letzte Ziffer im Namen fortlaufend (also _2.zip, _3.zip etc. – bis 12).
Das „DE“ in dem Namen der ZIP Datei unterscheidet sich. Sprich die nächste ZIP Datei heißt „Bla_HU_Blubb_2017_1“ (HU für Ungarn). Also habe ich somit 12 Zip-Dateien mit unterschiedlichem Landeskürzel.

Nun möchte ich das mein Script das Verzeichnis durchforstet und jede ZIP Datei entpackt. Zusätzlich soll das Script das Land in der Mitte des Dateinamen auslesen (z.B. für Kroatien „HR“) und diesen ausgelesenen Wert in eine Textdatei schreiben.
Danach soll das Script die entpackte Datei wieder zu einem ZIP Archiv packen, aber diesmal unter dem Namen „Blubb_war_in_HR_2017“.


Leider scheitert es bei mir bereits an den ersten Stellen…
Sodass ich mich nicht mal entscheiden kann ob ich nun eine For, While oder Until Schleife nehmen soll.
Zudem verstehe ich gerade nicht, wie ich dem SH Script beibringen soll, dass pro einem „Schleifen-Run“ nur eine ZIP Datei entpacken soll und nicht gleiche alle..
 
Wozu das Entpacken/Packen? Die Dateien (z.B in einer for-Schleife) umzubenennen würde doch genügen.
 
Code:
#!/bin/bash

# für jedes zip in diesem verzeichnis
for i in *.zip; do
  # land/jahr auslesen
  country=$(echo $i | cut -d _ -f 2)
  year=$(echo $i | cut -d _ -f 4)

  # land in datei schreiben
  echo $country > country.txt

  # country.txt zum zip hinzufügen
  zip -u $i country.txt

  # umbenennen
  mv $i nobody_was_in_$country\_$year.zip
done

edit: beim umbenennen fehlt die fortlaufende nummer (achtung! das script überschreibt so die fortlaufenden dateien mit der jeweils letzten), das bekommst du selbst hin :p
 
Zuletzt bearbeitet:
bratmaxe247 schrieb:
Wozu das Entpacken/Packen? Die Dateien (z.B in einer for-Schleife) umzubenennen würde doch genügen.

Wie gesagt, ist für mich nur zur Übung. Einfach um etwas Erfahrung mit dem Bash programmieren zu bekommen.

@0x8100
Vielen Dank für das Skript!
Werde mich heute damit auseinander setzen :)
 
Zurück
Oben