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