PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateien paarweise verwalten



Untamed
16.10.09, 11:08
Hallo,

habe folgendes Problem: ich habe einen Ordner mit 10.000en wav Dateien und dazugehörigen txt Dateien. Die txt Dateien mit bis auf die Endung identen Dateinamen beinhalten den in der wav Datei gesprochenen Text. (nötig zum Bau eines Spracherkenners)

Jetzt suche ich nach Konsolenbefehlen/Skripten um diesen Datensatz effizient verwalten zu können - z.B. alle Paare von txt/wav Dateien, welche ein bestimmtes Wort enthalten in einen Unterordner verschieben.
Damit würden sich dann mehrere Sub-Datensätze ergeben.

Diese würde ich dann wieder gerne aufsplitten, dieses Mal aber random (80% der Daten in einen Unterordner train, 5% in dev und 15% in test)

Zusammengefasst:
aktuelle Ordnerstruktur: 1 Ordner - 10.000 wav mit 10.000 dazugehörigen txt Files

gewünschtes Ergebnis: ~20 Ordner (nach verschiedenen Kriterien) mit jeweils 3 Unterordnern (train, dev, test).

Eine möglichst effiziente Methode wäre gewünscht - schön wäre es auch die Kriterien für die Trennung dynamisch ändern zu können (evt. in den neuen Ordnern nur symbolische Links)

Könnte mir jemand ein bisserl weiterhelfen?

Mit bestem Dank in Voraus

marce
16.10.09, 11:23
selbst scripten - sowas wir find, basename, dirname, grep.

Evtl. auch per Metadaten-Verwaltung und ein entsprechendes Tool?

lkwg82
17.10.09, 01:14
wenn du programmieren kannst, schreibe dir Java/Perl/PHP etc. selbst ein Programm.

Dann kannst du dynamisch die Dynamik des Verschiebens ändern.

Sollte für deinen Fall das sauberste sein. Bei Shellskripten kann man schnell die Übersicht verlieren, jedenfalls meine Meinung und deshalb nicht zu empfehlen.

stefan-tiger
17.10.09, 19:47
Ich würde es erstmal mit nem Shell-Script probieren. Natürlich erstmal per "echo" nur und vorher ne Sicherung machen ;)

Vll. geht es so:
1. ls *.wav > liste.txt
2. Endung .wav in liste .txt wegschneiden
3. mv .... liste + .wav und liste + .txt ....
...

Das mit deinen Kriterien ist mir nicht ganz klar.

moedule
17.10.09, 21:28
bau dir doch einfach kleine scripte wie my_mv, my_cp, my_rm (mehr wirst du kaum brauchen). damit kannst du dann entsprechend z.B. die wav verschieben/kopieren/löschen und die txt wird automatisch genauso kopiert

als beispiel my_mv


#!/bin/sh
mv $1 $2
mv ${1%.wav}.txt $2


anzuwenden wie folgt:
./my_mv test.wav /pfad/zu/einem_anderer_ordner/

mit diesen drei tools kannst du dann ja ganz normal arbeiten

moe

lkwg82
18.10.09, 03:56
oder so und dann packst du vor dem sammeln in der Liste die Filter

so daß du in deiner Liste schon die finale Liste hast.

Wie du die Filter wählst, ist nun eine andere Geschichte.

Deine dynamischen Kriterien können ja vielfältig sein: Länge, Titellänge etc.

was es da nicht noch alles gibt.

1. Filtern
2. Verschieben

Untamed
19.10.09, 11:28
Danke für die zahlreichen Antworten - bin jetzt mal am Experimentieren.