• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

(Zip) Archive rekursiv entpacken relativ von Hauptordner zu Zielordner

Meta

gesperrt

Registriert
11 Feb. 2017
Beiträge
1.379
Ort
Ostberlin
:D

Code:
find "$Archive" -iname *.zip
Ist soweit klar, findet ausgehend vom weiter oben festgelegten Pfad alle Archivdateien und piped sie zu gsed.

Code:
gsed -r "s#$Archive(\/.*\/).*#\1#"
gsed entfernt von allem, was kommt, vorn den Pfad zu den Archivdateien und hinten den Dateinamen. Die "Pfadrudimente" werden zu awk gepiped.

Code:
awk -v "Archive=$Archive" -v "Daten=$Daten"
Hier werden Bash-Variablen zu awk-Variablen. Muss nicht sein, erleichtert aber das Quoting ungemein.


Code:
{!a[$0]++}
Klassiker, awk liest die von gsed kommenden Pfade und packt sie in ein Array, wenn sie nicht schon drin sind.


Code:
END {for (i in a) {cmd=sprintf("for f in \"%s%s*.zip\"; do mkdir -p \"%s%s\" && unzip \"$f\" -d \"%s%s\"; done\n",Archive, i, Daten, i, Daten, i); system(cmd)}}
Wenn von gsed nichs mehr kommt, bastelt awk mit der Funktion sprintf() eine Kommandozeile in der Variablen cmd zusammen, die an die Prozedur system() übergeben werden kann. Das ist notwendig, weil man innerhalb des system-Parameters nur ganz eingeschränkte Quoting-Möglichkeiten hat.


Code:
"for f in \"%s%s*.zip\"
Diese Bash-for-Schleife ist notwendig, weil Bash das "*.zip" sofort erweitert und alle in diesem Pfad gefundenen Archive auf einmal an unzip übergibt, was sich daraufhin mit einer Fehlermeldung verabschiedet.


Code:
mkdir -p \"%s%s\"
unzip meckert manchmal rum, wenn der Zielpfad nicht existiert. Manchmal auch nicht. Es schadet jedenfalls nicht.


Code:
unzip \"$f\"
unzip bekommt seinen Quellpfad aus der for-Schleife als Bash-Variable.


Code:
-d \"%s%s\"
unzip bekommt seinen Zielpfad, der sich aus dem anfangs definierten "Daten=" und dem von gsed extrahierten "Restpfad" zusammensetzt.

Dann noch das Ganze mit system() an Bash übergeben- thats all. :cool:
 
Oben