diff --git a/rename_special_chars.sh b/rename_special_chars.sh index bb20026..f4f814d 100644 --- a/rename_special_chars.sh +++ b/rename_special_chars.sh @@ -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 ""