Logo supple-pixels.net @ bash scripts

Herzlich Willkommen bei supple-pixels.net

chnames.sh

Dieses Bash-Skript hatte ich ursprünglich geschrieben, als ich viele Dateien auf einmal umbenennen wollte, die nicht nur Leerzeichen enthielten, Umlaute und Akzentzeichen, sondern alle möglichen anderen abenteuerlichen Zeichen wie z.B. () [] {} <> ; : ' & + und einige mehr. chnames.sh läßt sich mit beliebigen Datei- und Verzeichnisnamen verwenden, sofern diese in UTF-8, ISO-8859-1 oder ASCII kodiert sind.

chnames.sh kann ...

  • Dateien und Verzeichnisse umbenennen, indem Ersetzungen bestimmter Zeichen und Zeichenfolgen gemäß vordefinierter Regeln vorgenommen werden. Das ist möglich für einzelne Dateien, ganze Verzeichnisse oder auch rekursive Verzeichnisdurchläufe.
  • reine Testdurchläufe durchführen, die nur ausgeben, wie Namen aussähen, wenn sie umbenannt würden.
  • log-Dateien mit den Vorher-Nachher-Namen anlegen.
  • ein Undo-Skript generieren, um alle Änderungen wieder rückgängig zu machen.
  • einfach nur testen, ob Namen unliebsame Zeichen enthalten (= alle außer: A-Z a-z 0-9 ~._-).

Ersetzungsregeln

chnames.sh nimmt beim Umbenennen folgende Ersetzungen vor:

Zeichen Wird zu
Klammern: () [] {} <> -
Leerzeichen _
Ä Ö Ü ä ö ü ß Ae Oe Ue ae oe ue ss
+ & _and_ bzw. _und_ (je nach Sprachwahl)
° _deg_ bzw. _Grad_ (je nach Sprachwahl)
: ; .
, gefolgt von Leerzeichen: _
sonst: .
' " ` ´ ? ! ^ # * ¿ ¡ , Werden entfernt.
Akzentzeichen Werden zu Zeichen ohne Akzent:
ÀÁÂÃÅ-A àáâãå-a
Æ-AE æ-ae
ÇĆĈĊČ-C çćĉċč-c
ÈÉÊË-E èéêë-e
ÌÍÎÏ-I ìíîï-i
Ñ-N ñ-n
ÒÓÔÕØ-O òóôõø-o
ŚŜ ŞŠ-S śŝşš-s
ÙÚÛ-U ùúû-u
Ý-Y ýÿ-y
ŹŻ Ž-Z ź żž-z
mehrere Leerzeichen - _ . ~ Werden auf 1 Zeichen reduziert.
- am Namensanfang Wird entfernt.

Wichtiger Hinweis

chnames.sh läßt sich nur UTF-8-kodiert in einer UTF-8-Shell verwenden, da das Skript selbst Zeichen enthält, die außerhalb des ISO-8859-1-Bereiches liegen!

Falls ihr noch kein UTF-8 fertiges System habt und trotzdem gerne chnames.sh verwenden wollt, gibt es hier ein paar Hinweise.

Abhängigkeiten

  • sed
  • iconv
  • less
  • UTF-8-Terminal
  • bash (mindestens Version 3)

Downloads

chnames.sh unterliegt der GNU General Public License und kann gemäß deren Bedingungen frei verwendet werden. Detailliertere Informationen zur GPL sind zu finden unter http://www.gnu.org/copyleft/gpl.html und liegen außerdem dem Skript bei.

» Download chnames_070427.tar.gz

MD5 Summe: 611477112cb8be35ca4f7762c13d063f

Übrigens, die englische Version dieses Skripts ist hier zu finden.

Zum Testen gibt es hier noch ein kleines Archiv mit sonderbaren und dennnoch möglichen Dateinamen herunterzuladen:

» Download chnames_testfilenames.tar.gz

MD5 Summe: b1249ea2182682a1cccb45ebdfec4f5d

Screenshots

   

Kurze Hinweise zu UTF-8

  • Ein UTF-8 xterm läßt sich, sofern die entsprechende UTF-8-Locale installiert ist, z.B. öffnen mit

    LANG=de_DE.UTF-8 xterm

    Damit Unicode-Zeichen dann auch richtig dargestellt werden können, muß natürlich auch eine passende Unicode-Schriftart installiert sein (ISO-10646). Sollte ein xterm trotzdem nicht alle Zeichen aus der chnames.sh-Ersetzungstabelle anzeigen, könnte vielleicht ein anderes Terminal weiterhelfen. Ich selbst verwende sehr gerne urxvt (= rxvt-unicode).
    Der oben genannte Befehl funktioniert natürlich auch für die konsole, das gnome-terminal oder andere Programme.

  • Der Befehl "locale" zeigt die aktuell verwendeten Lokalisierungs-Einstellungen an.
    Mit "locale -a" wird ausgegeben, welche Locales installiert sind.

  • Nützliche Tools:

    • convmv
      Hiermit lassen sich bequem Dateinamen, sogar rekursiv durch viele Verzeichnisse, nach UTF-8 konvertieren.
    • iconv, recode
      Diese beiden Programme konvertieren Dateiinhalte um, z.B. nach UTF-8 und sehr vielen mehr.
    • file
      Dieses Programm ist meist in der Lage, die Kodierung von Dateien richtig zu erkennen.
  • Links:


Wenn ihr mir Feedback geben oder Verbesserungsvorschläge machen möchtet, dann schreibt mir doch einfach.

Conny

freshmeat.net
linuxlinks.com