Thread Dateinamen durchsuchen (10 answers)
Opened by gmafx at 2009-12-10 21:06

gmafx
 2009-12-10 21:06
#129158 #129158
User since
2009-11-19
47 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe einen Ordner mit 37 files. Diese möchte ich eigentlich nur mittels "cat" miteinander vereinen. Allerdings muss dies in sortierter Reihenfolge passieren. Die Files in diesem Ordner heissen:

cluster0_gaf.txt
cluster10_gaf.txt
cluster11_gaf.txt
cluster12_gaf.txt
cluster13_gaf.txt
cluster14_gaf.txt

bis cluster 37.

Wenn ich die Dateinamen einlese bekomme ich sie nicht vernünftig sortiert (also logisch aufsteigend von 0-37).

Deswegen dachte ich an folgende Lösung:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@clusters =(0..37);
opendir (DIR, ".") or die "$!";
@files = grep {/cluster/} readdir DIR;print @files;
for $clusters ( @clusters)
{
for $files (@files)
{
if ($files =~ /$clusters\_g/)
{
$file = $files;
print "$clusters $file\n";
}
}
}


Ich bin absoluter Anfänger was das schriben von Skripts angeht, vergebt mir also bitte dii umständliche Art. Das Skript soll also einfach alle Dateien einlesen, die "cluster" im Namen beinhalten. Dann soll durch den den array $cluster (Zahlen von 0-37) gegangen werden und geschaut werden, wann diese Zahl in den eingelesenen Dateinamen vorkommt.

Da liegt mein Problem, also in der Abfrage (REGEX-Lernkurve ist bei mir sehr langsam):
die liefert lauter Mehrfachnennungen für z.B. "1" findet sie natürlich

1 cluster11_gaf.txt
1 cluster1_gaf.txt
1 cluster21_gaf.txt
1 cluster31_gaf.txt

statt nur cluster1_gaf.txt!

Das ganze nutze ich letztenendes, um einen Befehlsausdruck für "cat" mittels eines Systemcalls (system('cat $liste_der_dateien_in_richtiger_reihenfolge > neue.datei')) zu erzeugen.

Ok, wahrscheinlich ohnehin viel zu aufwendig. Mir wäre schon geholfen, wenn ich einen Tip bekäme, wie ich die Abfrage besser gestalten könnte.

Noch beser wäre natürlich ein "Einzeiler", der das Ganze etwas eleganter löst.

gma

View full thread Dateinamen durchsuchen