PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : rename + regulärer ausdruck



basti1985
18-10-2007, 20:18
hallo ich wollte mir für amarok (und auch die konsole) folgenden perl skript basteln.
nun hab ich von perl absolut keinen schimmer ... doch nen lösungsansatz ist schon mal da .... und zwar sollen sowohl die dateinamen als auch die ID3 Tags formatiert werden...

zb.
BLA BLA BLA ==>> Bla Bla Bla
tja tja_1235_ ==>> Tja Tja 1235
ach ach-ach ==>> Ach Ach - Ach
rofl.-.rofl ==>> Rofl - Rofl



#!/usr/bin/perl -w
use strict;

open(FIND, "find |");
while(<FIND>) {
chomp;
next if $_ eq $0;
$_=~ s/(\b)([a-z])/\1\u\2/g;
rename($_ , lc($_));
print $_; #Testausgabe in konsole
}
close(FIND);

hab das mal in einem testordner versucht, das umbennen geht ganz gut doch die groß-kleinschreibung wird nur in der konsole sichtbar ... ordner rename bleibt davon unbeeindruckt.

wie könnt ich da lösen ??

jan61
19-10-2007, 20:27
...hab das mal in einem testordner versucht, das umbennen geht ganz gut doch die groß-kleinschreibung wird nur in der konsole sichtbar ... ordner rename bleibt davon unbeeindruckt...

Was meinst Du mit diesem Satz? Verzeichnisse werden nicht umbenannt? Oder Dateien in Unterverzeichnissen werden nicht umbenannt? Oder ...?

Wenn ich verstanden habe, was Dein Problem ist, dann kann ich Dir sicher besser helfen. Für den Anfang eine Vermutung: So wie Dein (ziemlich rudimentärer) find arbeitet, findet er zuerst mal ein Unterverzeichnis. Das benennt er um. Dann liefert er Dir die Pfade unterhalb dieses Verzeichnisses, das ist aber umbenannt worden - diese Pfade stimmen also nicht mehr. Versuche in diesem Fall mal die find-Option -depth, damit werden die Inhalte der Verzeichnisse VOR dem Verzeichnis geliefert.

Außerdem ist es immer eine gute Idee, den Returncode von Funktionen abzuprüfen: perldoc -f rename gibt dazu einen Tipp.

Jan

jan61
05-11-2007, 23:04
Ähm - ich will ja nicht rumnörgeln - aber es wäre doch nett, wenn Du mal kurz eine Rückmeldung darüber lieferst, ob das nun der Fehler war und ob Du den Fehler beheben konntest. Absoluter Wahnsinn wäre es dann, wenn Du den korrigierten Code zeigst, dann haben auch andere Leser des Threads was davon.

Jan