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:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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 xtermDamit 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.
- convmv
Links:
Wenn ihr mir Feedback geben oder Verbesserungsvorschläge machen möchtet, dann schreibt mir doch einfach.





