59 lines
2.4 KiB
Markdown
59 lines
2.4 KiB
Markdown
Gerne, hier ist eine übersichtliche und gut strukturierte `README.md` für deine Skripte:
|
|
|
|
# Dateinamen-Korrektur-Skripte
|
|
|
|
Dieses Skript-Set hilft dir dabei, zwei häufige Probleme mit Dateinamen zu beheben:
|
|
|
|
1. **Falsch kodierte Zeichen**, die nach einer Konvertierung unlesbar sind (z. B. `Cabr'$'\351''` statt `Cabré`).
|
|
2. **Unerwünschte Zusätze** wie `(ungültige Kodierung)` in Dateinamen.
|
|
|
|
-----
|
|
|
|
### 1\. Korrektur der Zeichenkodierung mit `convmv`
|
|
|
|
Dieses Skript korrigiert falsch dargestellte Sonderzeichen, indem es die Dateinamen von einem älteren Zeichensatz (`iso-8859-1`) in den modernen Standard (`utf-8`) konvertiert.
|
|
|
|
**Voraussetzung:**
|
|
Du musst das Tool `convmv` installiert haben.
|
|
|
|
* **Debian/Ubuntu:** `sudo apt-get install convmv`
|
|
* **Arch:** `sudo pacman -S convmv`
|
|
|
|
**Anwendung:**
|
|
Führe den Befehl im Verzeichnis aus, in dem die fehlerhaften Dateien liegen.
|
|
|
|
```bash
|
|
# Zuerst einen Testlauf durchführen, um die Änderungen zu prüfen
|
|
convmv -f iso-8859-1 -t utf-8 -r .
|
|
|
|
# Wenn die Ausgabe korrekt ist, den Befehl mit --notest ausführen
|
|
# Dieser Schritt führt die tatsächliche Umbenennung durch
|
|
convmv -f iso-8859-1 -t utf-8 --notest -r .
|
|
```
|
|
|
|
* `--notest`: Führt die Änderung wirklich durch (ohne diesen Parameter ist es nur ein Testlauf).
|
|
* `-r`: Wendet den Befehl **rekursiv** auf alle Unterverzeichnisse an.
|
|
|
|
-----
|
|
|
|
### 2\. Entfernen von unerwünschten Zusätzen mit `find` und `rename`
|
|
|
|
Nach der Kodierungskorrektur können Dateinamen den Zusatz `(ungültige Kodierung)` enthalten. Dieses Skript entfernt diesen Zusatz aus allen Dateien und Verzeichnissen.
|
|
|
|
**Voraussetzung:**
|
|
Du benötigst das `rename`-Tool, das oft als `perl-rename` bekannt ist.
|
|
|
|
* **Debian/Ubuntu:** `sudo apt-get install rename`
|
|
* **Arch:** `sudo pacman -S perl-rename`
|
|
|
|
**Anwendung:**
|
|
Führe den folgenden Befehl in dem entsprechenden Verzeichnis aus.
|
|
|
|
```bash
|
|
# Sucht rekursiv nach Dateien mit "(ungültige Kodierung)" und entfernt den Text
|
|
find . -depth -name "* (ungültige Kodierung)*" -exec rename 's/ \(ungültige Kodierung\)//' {} \;
|
|
```
|
|
|
|
* `find . -depth`: Findet alle Dateien und Verzeichnisse, beginnend im aktuellen Ordner. `-depth` sorgt dafür, dass zuerst die Dateien und dann die Ordner selbst umbenannt werden, um Fehler zu vermeiden.
|
|
* `-name "* (ungültige Kodierung)*"`: Sucht nach Dateinamen, die den Zusatz enthalten.
|
|
* `rename 's/ ... //`: Ersetzt den Suchbegriff (in den Klammern) durch einen leeren String und entfernt ihn so aus dem Dateinamen. |