[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