Hallo an alle,
ich habe bereits im Internet selbst nach Abhilfe gesucht, aber es führte bisher nicht zum gewünschten Ergebnis.
Ziel: Entfernung aller Ausrufezeichen aus Ordner- und Dateinamen in einem Verzeichnis (rekursiv).
Bisherige Anlaufversuche: Detox (löscht leider alles an "problematischen Zeichen", man kann nicht einschränken) sowie mehrere Command-Befehle (zuletzt find . -depth -exec rename -n -v 's/\?.*//' {} +). Dieser Befehl löscht aber nicht nur das Ausrufezeichen, sondern alles AB dem Ausrufezeichen.
Die Antwort ist garantiert wieder mal sehr einfach, ich komme aber leider nicht weiter.
Vielen lieben Dank im Voraus.
Ach ja, detox und rename sind installiert!
Ausrufezeichen entfernen
Re: Ausrufezeichen entfernen
Würde man direkt in Pfad und Dateinamen die ! entfernen, dann würde rename nachfolgend, aus der find-Ergebnisliste, keine weiteren - inzwischen bereinigte - Verzeichnisse mehr finden. Deswegen denke ich, muss man dafür 2 rename-Läufe verwenden - einen für die Verzeichnisse und einen für die Dateien:
Reihenfolge ist egal, Arbeitsverzeichnis ist unter Umständen anzupassen.
EDIT:
Die Verzeichnisse funktionieren so noch nicht!
Code: Alles auswählen
find . -depth -name '*!*' -type d -exec rename 's/!//g' {} \;
find . -name '*!*' -type f -exec rename 's/!//g' {} \;
EDIT:
Die Verzeichnisse funktionieren so noch nicht!
-
- Beiträge: 2
- Registriert: 09.02.2023 21:46:40
Re: Ausrufezeichen entfernen
Du bist ein Goldstück, die beiden Befehle haben in Reihenfolge perfekt funktioniert!
Re: Ausrufezeichen entfernen
Dann hat deine Verzeichnisstruktur nicht den Worstcase an ! aufgewiesen!? Richtig wäre nämlich die zusätzliche Option -d bei den Pfaden gewesen, um mehrere ! in verschiedenen Pfadbestandteilen ein und desselben Pfades zu beachten:
Code: Alles auswählen
find . -depth -name '*!*' -type d -exec rename -d 's/!//g' {} \;
find . -name '*!*' -type f -exec rename 's/!//g' {} \;
Re: Ausrufezeichen entfernen
Das verstehe ich nicht. Arbeitet `-depth' nicht gerade so, dass garantiert immer zuerst die Verzeichnisinhalte und danach die Verzeichnisse bearbeitet werden. Damit sollte es in einem Durchlauf moeglich sein. Oder uebersehe ich etwas?tobo hat geschrieben:20.07.2024 16:22:35Würde man direkt in Pfad und Dateinamen die ! entfernen, dann würde rename nachfolgend, aus der find-Ergebnisliste, keine weiteren - inzwischen bereinigte - Verzeichnisse mehr finden. Deswegen denke ich, muss man dafür 2 rename-Läufe verwenden - einen für die Verzeichnisse und einen für die Dateien:
Ich denke, so sollte es funktionieren:
Code: Alles auswählen
find . -depth -name '*!*' -exec rename -d 's/!//g' {} \;
Use ed once in a while!
Re: Ausrufezeichen entfernen
Stimmt, mit der rename-Option -d funktioniert es auch ohne spezielle Datei/Verzeichnis-Suchangabe - also in einem Lauf. Mein Problem war ja nicht das find, sondern das rename und dabei das globale Ändern in allen Pfadanteilen. Mit der gefunden Option -d hätte ich dann noch eine Takt weiterdenken müssen...
Re: Ausrufezeichen entfernen
<OT>Eieiei, kann man hier wieder geiles Zeug aufschnappen!</OT>
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])