Hallo, wie kann ich viele Dateien umbenennen. von z.b. 10-blablabla.txt 5-qweqwewqwe.txt 735-werwerwer.txt nach blablabla.txt qweqwewqwe.txt werwerwer.txt diese regex trifft das was weg soll: ^.*- wie kann ich nun diese vielen Dateien dementsprechend umbenennen?
Passendes Shell-Script erzeugen durch:
1 | ls -1 | sed -e "s/^.*-\(.*\)$/mv & \1/" |
:
Bearbeitet durch User
Hallo, danke habe deine 5 Versuche verfolgt ;) und getestet. das benennt aber nicht um sondern erzeugt eine Kommando liste wie z.B. mv 10-blablabla.txt blablabla.txt mv 5-qweqwewqwe.txt qweqwewqwe.txt mv 735-werwerwer.txt werwerwer.txt wirklich umbenannt wurde nichts.
Charly schrieb: > wirklich umbenannt wurde nichts. Sollte auch nicht. Aber das erzeugt ein File, das es bewirkt. Ich mache das gerne so, weil ich dann kontrollieren kann was passiert.
Tom K. schrieb: > rename 's/^.*-//' * Danke so ähnlich hatte ich das schon versucht, funktioniert komischerweise gar nicht der prompt kommt wieder und nichts ist passiert.
A. K. schrieb: > Sollte auch nicht. Aber das erzeugt ein File, das es bewirkt. Ich mache > das gerne so, weil ich dann kontrollieren kann was passiert. ok, das hatte ich nicht erkannt ;) dann lenke ich in ein file um und lass es laufen :)
Fortsetzung: Also in der Art ..... > /tmp/1.sh ... /tmp/1.sh kontrollieren ... sh /tmp/1.sh
A. K. schrieb: > Fortsetzung: > > Also in der Art > ..... > /tmp/1.sh > ... /tmp/1.sh kontrollieren ... > sh /tmp/1.sh genau so hab ichs gemacht, vielen dank hat geklappt :)
Nochmal nachgesehen: Es gibt noch ein anderes rename, das keine Regexe kann. Bei Ubuntu wurde rename aber netterweise auf /usr/bin/prename umgebogen, das deine Files so wie von mir beschrieben umbenennt.
Tom K. schrieb: > Nochmal nachgesehen: Es gibt noch ein anderes rename, das keine Regexe > kann. Bei Ubuntu wurde rename aber netterweise auf /usr/bin/prename > umgebogen, das deine Files so wie von mir beschrieben umbenennt. ah, dann wird es daran liegen, ist kein ubuntu System. prename gibt es nicht. root@system:/root/test# rename -V rename (util-linux-ng 2.18) root@system:/root/test#
Nur für's Archiv: Das Perl-rename mit den Regexen ist debianspezifisch und deshalb in Ubuntu gelandet, das originale Primitiv-rename ist noch als rename.ul zu finden.
Oder das Ganze ohne sed und rename:
1 | for f in *-*; do mv "$f" "${f#*-}"; done |
Dateien ohne ein '-' im Namen bleiben unberührt, ansonsten wird alles bis zum ersten '-' im Namen abgeschnitten. Soll alles bis zum letzten '-' abgeschnitten werden, ersetze man das '#' durch '##'. Will man die Funktion erst kontrollieren, fügt man vor dem 'mv' noch ein 'echo' ein.
Ich benutze für diese Zwecke immer "mmv". Einfach mit
1 | sudo apt-get install mmv |
nachinstallieren. Das ist ein sehr vielseitiges Werkzeug zum Umbenennen mehrerer Dateien, das solche Probleme elegant löst und das fehlerträchtige Hantieren mit Shellskripten einspart. Siehe manpage...
1 | for i in $(find . -maxdepth 1 -iname "*-*"); do n=$(echo $i | cut -d'-' -f2); mv $i $n; done |
my 2 bash cent's :)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.