Sonderzeichen in Dateinamen ändern
Hallo, ich stehe hier auf dem Schlauch, gegeben sind viele Dateien mit allen möglichen Sonderzeichen im Namen zb. ~,#,^,%,', () und andere nette Sachen. Leerzeichen und einige Sachen habe ich schon entfernen können for i in *;do cmd="mv $(echo $i| sed 's/ /\\\ /g') $(echo $i | tr ' ' '_')";eval $cmd; done aber bei der Tilde und den Ticks(Apostroph) komme ich nicht weiter. Das ganze sollte eigentlich in einem Shellscript automatisch laufen. Könnte mich mal jemand auf den richtigen Weg bringen. Danke -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Ingo! On Sa, 19 Dez 2009, Ingo Kertscher wrote:
ich stehe hier auf dem Schlauch, gegeben sind viele Dateien mit allen möglichen Sonderzeichen im Namen zb. ~,#,^,%,', () und andere nette Sachen.
Leerzeichen und einige Sachen habe ich schon entfernen können
for i in *;do cmd="mv $(echo $i| sed 's/ /\\\ /g') $(echo $i | tr ' ' '_')";eval $cmd; done
aber bei der Tilde und den Ticks(Apostroph) komme ich nicht weiter.
Das ganze sollte eigentlich in einem Shellscript automatisch laufen.
Könnte mich mal jemand auf den richtigen Weg bringen. ungetestet: find . -type f -exec bash -c 'mv "$1" "$(echo "$1" | sed "s/[^a-zA-Z0-9]//g")" ' find-sh '{}' \;
(eine Zeile) Mit freundlichen Grüßen Christian -- Denken ist schwer, darum urteilen die meisten. -- Carl Gustav Jung -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Samstag, 19. Dezember 2009 14:46 schrieb Christian Brabandt: Hallo Christian
viele Dateien mit allen möglichen Sonderzeichen im Namen zb. ~,#,^,%,', () und andere nette Sachen.
ungetestet: find . -type f -exec bash -c 'mv "$1" "$(echo "$1" | sed "s/[^a-zA-Z0-9]//g")" ' find-sh '{}' \;
Funktioniert nach einem kurzen Test ganz gut nur Dateinamen mit einer ~ irgendwo im Namen werden nicht geändert. Dummerweise stolpert der Rest von meinem miesen Anfänger Script darüber. Aber jetzt kann ich erstmal wieder mit escape sequencen spielen.
Mit freundlichen Grüßen Christian
Danke Ingo -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Ingo! On Sa, 19 Dez 2009, Ingo Kertscher wrote:
Am Samstag, 19. Dezember 2009 14:46 schrieb Christian Brabandt:
find . -type f -exec bash -c 'mv "$1" "$(echo "$1" | sed "s/[^a-zA-Z0-9]//g")" ' find-sh '{}' \;
Funktioniert nach einem kurzen Test ganz gut nur Dateinamen mit einer ~ irgendwo im Namen werden nicht geändert.
Oha, folgender Einzeiler, diesmal rudimentär getestet und noch ein wenig aufgebohrt um Fehlerbehandlung, behebt diesen Mangel: find . -type f -exec bash -c 'mv -i "$1" "$(echo "$1" | sed -e "s/~/\\&/g" -e "s/[^a-zA-Z0-9]//g")_" ' find-sh '{}' \;
Aber jetzt kann ich erstmal wieder mit escape sequencen spielen. ???
Mit freundlichen Grüßen Christian -- Erfahrung ist der Name, mit dem jeder seine Dummheit bezeichnet. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 21. Dezember 2009 22:54 schrieb Christian Brabandt: Moin Christian,
Oha, folgender Einzeiler, diesmal rudimentär getestet und noch ein wenig aufgebohrt um Fehlerbehandlung, behebt diesen Mangel:
find . -type f -exec bash -c 'mv -i "$1" "$(echo "$1" | sed -e "s/~/\\&/g" -e "s/[^a-zA-Z0-9]//g")_" ' find-sh '{}' \;
Werde ich mal testen.
Aber jetzt kann ich erstmal wieder mit escape sequencen spielen.
Autsch wie heißen die Dinger vor Zeichen die in der Shell eine besondere Bedeutung haben sowie \ und " Danke Ingo -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Sam, 19 Dez 2009, Ingo Kertscher schrieb:
Hallo, ich stehe hier auf dem Schlauch, gegeben sind viele Dateien mit allen möglichen Sonderzeichen im Namen zb. ~,#,^,%,', () und andere nette Sachen.
Leerzeichen und einige Sachen habe ich schon entfernen können
for i in *;do cmd="mv $(echo $i| sed 's/ /\\\ /g') $(echo $i | tr ' ' '_')";eval $cmd; done
Wie krank is das denn. for file in *; do mv -i "$i" "$(echo "$i" | tr ' ' '_')"; done HTH, -dnh -- A funny symbol that I can't read has just been input. Continue, and I'll forget that it ever happened. -- a TeX message -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Samstag, 19. Dezember 2009 21:11 schrieb David Haller: Guten Abend
for i in *;do cmd="mv $(echo $i| sed 's/ /\\\ /g') $(echo $i | tr ' ' '_')";eval $cmd; done
Wie krank is das denn.
Sorry habe ich mir zusammengebastelt und tut bis auf ~ und ' und einigem anderen das was es soll.
for file in *; do mv -i "$i" "$(echo "$i" | tr ' ' '_')"; done
mv: Aufruf von stat für nicht möglich: Datei oder Verzeichnis nicht gefunden
HTH,
Naja nicht wirklich oder ich mach hier was falsch. Danke Ingo -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Son, 20 Dez 2009, Ingo Kertscher schrieb:
Am Samstag, 19. Dezember 2009 21:11 schrieb David Haller:
for file in *; do mv -i "$i" "$(echo "$i" | tr ' ' '_')"; done
mv: Aufruf von stat für nicht möglich: Datei oder Verzeichnis nicht gefunden
Mein Fehler. Kommt davon, wenn man sich nicht an die eigenen Konventionen hält. for file in *; do mv -i "$file" "$(echo "$file" | tr ' ' '_')"; done Jetzt aber ... -dnh -- 19: Provided the development coordinator has a medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one. --- Eric S. Raymond, "The Cathedral and the Bazaar" -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Sonntag, 20. Dezember 2009 00:29 schrieb David Haller: Hallo,
Mein Fehler. Kommt davon, wenn man sich nicht an die eigenen Konventionen hält.
Kommt vor kann ich wenigstens was lernen.
for file in *; do mv -i "$file" "$(echo "$file" | tr ' ' '_')"; done
Das tut etwas einfacher, das was meine Krankes Konstrukt auch macht, Leerzeichen entfernen.
Jetzt aber ...
Ja Danke Ingo -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
Christian Brabandt
-
David Haller
-
Ingo Kertscher