[linux-l] Umbenennen mehrerer Dateien -> mmv zmv
Sven Guckes
maillist-belug at guckes.net
Di Dez 12 01:27:08 CET 2006
* Sven Guckes <maillist-belug at guckes.net> [2006-12-11 13:18]:
> * Uwe Kramm <ukramm at gmx.de> [2006-12-11 12:48]:
> > Ich hab da mal ein kleines Problem, vielleicht kann mir da jemand helfen.
> > Ich hab ein Verzeichnis mit ca. 200 Dateien. Manche sind groß geschrieben
> > manche klein und manche haben auch Leerstellen im Namen.
> > Die möchte ich nun alle kleingeschrieben haben und
> > die Leerstellen durch Unterstriche_ ersetzt haben.
> > Gibt es da irgend ein Programm oder Befehl, mit dem man das einfach
> > erledigen oder muß ich doch alles einzeln mit Hand tüteln?
>
> man mmv
noch ein beispiel dazu:
dateien anlegen:
$ touch 1.FOO 2.Foo 3.fOO 4.fOo 5.foo
da muster '*' wird mit '#1' referenziert -
und das 'l' dazwischen steht fuer "lowercase":
$ mmv '*' '#l1'
$ ls -l
total 0
-rw------- 1 guckes wwwuser 0 Dec 12 01:16 1.foo
-rw------- 1 guckes wwwuser 0 Dec 12 01:16 2.foo
-rw------- 1 guckes wwwuser 0 Dec 12 01:16 3.foo
-rw------- 1 guckes wwwuser 0 Dec 12 01:16 4.foo
-rw------- 1 guckes wwwuser 0 Dec 12 01:16 5.foo
dasselbe in gruen (lies: uppercase):
$ mmv '*' '#u1'
$ ls -l
total 0
-rw------- 1 guckes wwwuser 0 Dec 12 01:16 1.FOO
-rw------- 1 guckes wwwuser 0 Dec 12 01:16 2.FOO
-rw------- 1 guckes wwwuser 0 Dec 12 01:16 3.FOO
-rw------- 1 guckes wwwuser 0 Dec 12 01:16 4.FOO
-rw------- 1 guckes wwwuser 0 Dec 12 01:16 5.FOO
die zsh hat eine funktion "zmv", welche die
funktionlitaet von "mmv" weit uebertrifft.
das substituieren von spaces in fast trivial:
$ exec zsh
$ autoload zmv
$ touch eins\ zwei\ \ drei\ \ \ ende
$ ls -l
total 0
-rw------- 1 guckes wwwuser 0 Dec 12 01:22 eins zwei drei ende
$ zmv '* *' '$f:gs/ /_'
$ ls -l
total 0
-rw------- 1 guckes wwwuser 0 Dec 12 01:22 eins_zwei__drei___ende
wozu skripte schreiben, wenn schon funktionen
in der shell existieren, die alles erledigen? ;-)
Sven
Mehr Informationen über die Mailingliste linux-l