#!/usr/bin/perl -w use DateTime; use FindBin; use IO::All; use File::Find; use Fcntl ':mode'; $path="/home/chris/Arbeitsfläche/SDE_HIK_Skripte"; # Pfad in dem alles beginnt @directories=("$path/SDE-Rohdaten"); # Liste der zu durchlaufenden Verzeichnisse (hier nur eines) $datum="2013"; # Suchoption: Jeder Dateiname mit diesem Inhalt wird aufgelistet. find(\&wanted, @directories); sub wanted { if (-f && $File::Find::name =~ /.*$datum.*\.csv/) { # Hier das Kriterium nach dem Dateien gesucht werden my @stats = lstat($File::Find::name); push(@copy_files,$File::Find::name); # schreibt alle gefundenen Dateien in @copy_files } } foreach $file (@copy_files) { $part = $file; # $part =~ s/^(.*\/).*$/\1/g; # Das ist keine Magie.... ;-) Hier wird lediglich der Dateipfad extrahiert :-P chdir $FindBin::Bin; # Wechselt in das Verzeichnis in dem sich das ausgeführte Skript befindet (da liegt auch die Datei) $temp < io("$file"); # Schreibt die Datei in $temp while ($temp =~s/"Messpunkt";//g) {} # Entfernt >> "Messpunkt"; << while ($temp =~s/"\d{5,}";//g) {} # Entfernt die fortlaufenden Messpunktnummern inkl. Semicolon, Zahl hat mind. 5 Stellen while ($temp =~s/["()]//g) {} # Entfernt alle >> "() << Zeichen (Anführungszeichen und Klammern) $temp =~s/Item 1/620.0.HW.TS.Tvl/; # Hier werden die "Item 1 - 25" in die entsprechenden Mess-IDs umgewandelt $temp =~s/Item 2/620.0.HW.TS.Trl/; $temp =~s/Item 3/620.0.0.TS.AUL/; $temp =~s/Item 4/620.0.EW.TS.1/; $temp =~s/Item 5/620.0.EW.TS.2/; $temp =~s/Item 6/620.0.EW.TS.3/; $temp =~s/Item 7/620.0.EW.TS.4/; $temp =~s/Item 8/620.0.0.TS.1/; $temp =~s/Item 9/620.0.0.TS.2/; $temp =~s/Item 10/620.0.0.RH.1/; $temp =~s/Item 11/620.0.0.RH.2/; $temp =~s/Item 12/620.0.0.CO2/; $temp =~s/Item 13/620.0.FW.ES/; $temp =~s/Item 14/620.0.FW.RV/; $temp =~s/Item 15/620.0.HW.ES/; $temp =~s/Item 16/620.0.HW.TS.Soll/; $temp =~s/Item 17/620.0.EW.TS.Trl/; $temp =~s/Item 18/620.0.KM.TS.Tvl/; $temp =~s/Item 19/620.0.KM.TS.Trl/; $temp =~s/Item 20/620.0.LA.TS.Trl/; $temp =~s/Item 21/620.0.EW.ES/; $temp =~s/Item 22/620.0.KM.ES/; $temp =~s/Item 23/620.0.LA.ES/; $temp =~s/Item 24/620.0.KM.TS.Soll/; $temp =~s/Item 25/620.0.LA.TS.Soll/; sub conv_dt { ($Day, $Month, $Year, $Hour, $Minute) = @_; $dt = DateTime->new( year => $Y, month => $M, day => $D, hour => $h, minute => $m, second => 0, time_zome => 'Europe/Berlin', ); $dt->set_time_zone('UTC'); return $dt->strftime('%d.%m.%Y %H:%M'); } $temp = ~s/^(\d\d)\.(\d\d)\.(\d\d\d\d)\s(\d\d):(\d\d)/conv_dt($1,$2,$3,$4,$5)/egm; $file =~s/.csv/_SDE_UTC.csv/; # Erweiterung des Dateinamen um "_SDE_UTC". Testdateiname: Report-20131025-0010.skv $temp >> io("$file"); # Änderungen werden in Datei gespeichert }