change to more special chars

This commit is contained in:
Dominik Höfling 2025-10-16 09:51:12 +02:00
parent 90c74d99cf
commit bbfdfbd97d

View File

@ -4,8 +4,8 @@
#
# Rename Special Characters to Underscores
#
# Skript zum Ersetzen von Sonderzeichen (|, <, >) durch Unterstriche (_)
# in Datei- und Ordnernamen unter macOS und Linux
# Skript zum Ersetzen von Sonderzeichen (|, <, >, /, \, *, ?, ") durch
# Unterstriche (_) in Datei- und Ordnernamen unter macOS und Linux
#
# Dieses Skript durchsucht rekursiv einen angegebenen Ordner und benennt
# alle Dateien und Unterordner um, die problematische Sonderzeichen enthalten.
@ -45,8 +45,8 @@ TARGET_DIR=""
show_help() {
echo "Verwendung: $0 [OPTIONEN] ZIELORDNER"
echo ""
echo "Ersetzt Sonderzeichen (|, <, >) durch Unterstriche (_) in allen"
echo "Datei- und Ordnernamen."
echo "Ersetzt Sonderzeichen (|, <, >, /, \\, *, ?, \") durch Unterstriche (_)"
echo "in allen Datei- und Ordnernamen."
echo ""
echo "Optionen:"
echo " -d, --dry-run Testlauf ohne tatsächliche Umbenennung"
@ -64,11 +64,11 @@ clean_name() {
local name="$1"
# 1. Ersetze alle Varianten von Sonderzeichen mit Leerzeichen
# Behandelt: "|", " |", "| ", " | ", "<", ">", " <", "> ", etc.
name=$(echo "$name" | sed -E 's/ *[|<>] */ /g')
# Behandelt: |, <, >, /, \, *, ?, " mit optionalen Leerzeichen darum
name=$(echo "$name" | sed -E 's# *[|<>/\\*?"]+ *# #g')
# 2. Ersetze verbleibende Sonderzeichen durch Leerzeichen
name=$(echo "$name" | tr '|<>' ' ')
name=$(echo "$name" | tr '|<>/\\*?"' ' ')
# 3. Ersetze mehrfache Leerzeichen durch einzelnes Leerzeichen
name=$(echo "$name" | sed -E 's/ +/ /g')
@ -181,7 +181,7 @@ while IFS= read -r -d '' item; do
else
((count_errors++))
fi
done < <(find "$TARGET_DIR" -depth -print0 | grep -zE '[|<>]')
done < <(find "$TARGET_DIR" -depth -print0 | grep -zE '[|<>/\\*?"]')
# Zusammenfassung
echo ""