Hallo,
ich will eine größere Anzahl an Dateien und Verzeichnisse bereinigen. Weitgehend funktioniert das auch, zuerst folgen einige geziehlte Umwandlungen von Sonderzeichen wie ö>oe. Abschliessend sollen alle verbleibenden Sonderzeichen lt. Regex [^A-Za-z0-9~.#\+\-] durch _ ersetzt werden, dabei wird jeder Dateiname mittels sed geändert und dann mit mv die Datei umbenannt.
Nun stelle ich fest, dass manche Zeichen für diese Vorgehensweise nicht greifbar sind, hier ein Beispiel:
1 2 3 4 | norfolk@server:~/$ ls test▒▒.txt 'test'$'\276\221''.txt' norfolk@server:~/$ find . ./test??.txt |
Was sind das für Chars und wie kann ich sie in einer Massenbearbeitung verändern?
Mein bisher verwendetes script kann solche Dateinamen nicht ändern. Vorgehensweise wäre eigentlich für jedes Verzeichnis mit "for f in $*; do <sanitize-script> done" die Dateinamen einzeln dem sanitize-script zu übergeben und dort zuerst mittels sanitized=echo $1 | sed '/^%/d #begin transliteration table: s@[^A-Za-z0-9~.#\+\-]@_@g #end transliteration table'
den neuen Dateinamen zu generieren und dann mittels mv die Datei umzubennenen.
Für alternative Lösungen bin ich natürlich auch offen, aber habe bisher kein besseres Tool gefunden.
LG, Norfolk