[rename] mehrere dateien umbenennen

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
s20e6a14
Beiträge: 29
Registriert: 28.11.2004 15:05:13

[rename] mehrere dateien umbenennen

Beitrag von s20e6a14 » 26.04.2006 11:49:50

Hallo,
habe ein Problem, und zwar würde ich gern alle Dateien und Ordner, die sich im Unterverzeichnis /home/stefan/daten01 umbennenen.
und zwar:
alle sonderzeichen entfernen
ß=ss
leerzeichen = _
__ = _
-- = -
und alles klein geschreiben teSt.hTm = test.htm


hab mal ein bisschen gestöbert und auf das tool rename gestoßen, allerdings ersetzt es alle leerzeichen nur im ordner daten01 ( rename 's/ /_/g' *)und nicht in den unterordnern.
und bei "rename -s/abc/xyz/gi *.c" kommt: unknown option s unknown option / unknown option a unknown option b unknown option c ....


Vielen Dank! Gruß Stefan

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 26.04.2006 11:55:40

Code: Alles auswählen

find /pfad/zum/verzeichnis -exec rename "s/ /_/g" {} \;

burgzinne
Beiträge: 33
Registriert: 08.06.2004 12:13:16

Beitrag von burgzinne » 26.04.2006 11:59:50

Versuch mal rename von "find" aus auszuführen:

Code: Alles auswählen

find . -exec rename {} REGEX \;
wobei REGEX durch deinen s/irgendwas/nochwas/ zu ersetzen ist.

burgzinne
Beiträge: 33
Registriert: 08.06.2004 12:13:16

Beitrag von burgzinne » 26.04.2006 12:00:54

Mist, war wieder einer schneller... ich tipp so langsam, vielleicht sollte ich mal Zehnfingerschreiben üben.

s20e6a14
Beiträge: 29
Registriert: 28.11.2004 15:05:13

Beitrag von s20e6a14 » 26.04.2006 13:37:09

danke, allerdings mit dem gleichen ergebnis!
es wurden nur die daten im ordner01 umbenannt aber nicht in den unterordnern!

gruss stefan

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22456
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 26.04.2006 14:53:25

Eventuell mal mmv ausprobieren, Oder auch die renameutils http://www.pro-linux.de/berichte/appfokus/emv/emv.html
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

s20e6a14
Beiträge: 29
Registriert: 28.11.2004 15:05:13

Beitrag von s20e6a14 » 26.04.2006 15:46:13

ist leider auch nicht ganz das wahre!
aber ein kleinen zwischenbericht, was ich in den letzten 2 stunden gefunden hab!

Code: Alles auswählen


find -exec rename y/A-Z/a-z/ {} ';'
macht alle Verzeichnis- und Dateinamen klein.
Für Sonderzeichen

Code: Alles auswählen

        find -exec rename "s/ä/ae/" {} ';'
        find -exec rename "s/ö/oe/" {} ';'
        find -exec rename "s/ü/ue/" {} ';'
        find -exec rename "s/ß/sz/" {} ';'
        find -exec rename "s/\ /_/" {} ';'
entfernt alle umlaute und leerzeichen und ersetzt diese




muß eventuell mehrmals ausgeführt werden!


allderings hab noch immer keine lösung wie ich die sonderzeichen wie !??() entferne??!! son mist das gibts ja fast nicht!??? tztztz 8O

Benutzeravatar
seep
Beiträge: 544
Registriert: 31.10.2004 14:21:08
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: HSK

Beitrag von seep » 26.04.2006 17:23:13

Ich würde hier nicht mit rename sondern nur mit find, sed und mv arbeiten, dabei die Möglichkeit von sed nutzen, die Suchen/Ersetzen-Regeln (Plural!) in einer Datei zu hinterlegen. Ein echo vor dem mv sorgt dafür, daß man schön das beruhigende Spielchen Was-wäre-Wenn betreiben kann.

Code: Alles auswählen

find . -type f -print | while read orgname
do
    newname=$(echo "$orgname"  | sed -f rules.sed)
    if [ "$orgname" != "$newname" ]; then
        echo mv "$orgname" "$newname"
    fi
done

$ cat rules.sed
s/ä/ae/g
s/ö/oe/g
s/ü/ue/g
s/ß/ss/g
usw.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 27.04.2006 15:15:27

Zeichen wie ?() muesstest du in den Regel eventuell escapen, sprich, einen \ davorpacken. Wie das mit ! ist, kann ich grad nicht sagen, aber nen Versuch mit \ davor kann ja nicht schaden.
Das ganze kommt daher, dass bestimmte Sonderzeichen in regulaeren Ausdruecken ne spezielle Bedeutung haben. So ist das ? dafuer, dass das Muster da sein kann, aber nicht da sein muss. Die Klammern dienen zum Gruppieren und Merken von Matches. Damit kann man die Matches in der Ersetzung dann wieder mit einbauen.

Antworten