Ausrufezeichen entfernen

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Multiverse
Beiträge: 2
Registriert: 09.02.2023 21:46:40

Ausrufezeichen entfernen

Beitrag von Multiverse » 20.07.2024 14:24:31

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!

tobo
Beiträge: 2335
Registriert: 10.12.2008 10:51:41

Re: Ausrufezeichen entfernen

Beitrag von tobo » 20.07.2024 16:22:35

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:

Code: Alles auswählen

find . -depth -name '*!*' -type d -exec rename 's/!//g' {} \;
find . -name '*!*' -type f -exec rename 's/!//g' {} \;
Reihenfolge ist egal, Arbeitsverzeichnis ist unter Umständen anzupassen.

EDIT:
Die Verzeichnisse funktionieren so noch nicht!

Multiverse
Beiträge: 2
Registriert: 09.02.2023 21:46:40

Re: Ausrufezeichen entfernen

Beitrag von Multiverse » 20.07.2024 16:34:31

Du bist ein Goldstück, die beiden Befehle haben in Reihenfolge perfekt funktioniert! :hail:

tobo
Beiträge: 2335
Registriert: 10.12.2008 10:51:41

Re: Ausrufezeichen entfernen

Beitrag von tobo » 20.07.2024 16:53:56

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' {} \;

Benutzeravatar
Meillo
Moderator
Beiträge: 9224
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Ausrufezeichen entfernen

Beitrag von Meillo » 20.07.2024 17:10:40

tobo hat geschrieben: ↑ zum Beitrag ↑
20.07.2024 16:22:35
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:
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?

Ich denke, so sollte es funktionieren:

Code: Alles auswählen

find . -depth -name '*!*' -exec rename -d 's/!//g' {} \;
Use ed once in a while!

tobo
Beiträge: 2335
Registriert: 10.12.2008 10:51:41

Re: Ausrufezeichen entfernen

Beitrag von tobo » 20.07.2024 17:43:16

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...

Benutzeravatar
GregorS
Beiträge: 3124
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: Ausrufezeichen entfernen

Beitrag von GregorS » 20.07.2024 23:44:00

Meillo hat geschrieben: ↑ zum Beitrag ↑
20.07.2024 17:10:40
Ich denke, so sollte es funktionieren: ...
<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])

Antworten