[linux-l] Anfangsbuchstaben-Umwandlung von Dateien auf der Konsole

Lutz Meinert lutz.meinert at madvedge.de
Fr Jun 4 09:00:45 CEST 2004


On Fri, 2004-06-04 at 00:04, Jens Dreger wrote:
> ...
> Es gibt z.B. das kleine Tool 'rename'. Ist bei debian bei perl dabei.
> Damit geht (z.B.):
> 
> dreger at smart:..belug/rename> touch {a,b,c}test
> dreger at smart:..belug/rename> rename -v '$_=ucfirst' *
> atest renamed as Atest
> btest renamed as Btest
> ctest renamed as Ctest
> dreger at smart:..belug/rename> ls
> Atest  Btest  Ctest
> 

Vielen Dank für den Tip, allerdings funktioniert es nicht bei mir, weil
das rename, was bei der SuSE9.1 default installiert ist wohl
ein anders ist:

p10: lutz  ~/Desktop/Tmp
$ touch {a,b,c}test
p10: lutz  ~/Desktop/Tmp
$ ls
atest  btest  ctest
p10: lutz  ~/Desktop/Tmp
$ rename -v '$_=ucfirst' *
p10: lutz  ~/Desktop/Tmp
$ ls
atest  btest  ctest

> Was natuerlich auch geht, ist z.B. einfach:
> 
> dreger at smart:..belug/rename> ls | perl -lne '$new=lcfirst; rename $_,$new;'
> dreger at smart:..belug/rename> ls
> atest  btest  ctest

leider dito:

p10: lutz  ~/Desktop/Tmp
$ ls
atest  btest  ctest
p10: lutz  ~/Desktop/Tmp
$ > ls | perl -lne '$new=lcfirst; rename $_,$new;'
p10: lutz  ~/Desktop/Tmp
$ ls
atest  btest  ctest  ls

Das bei mir default installierte rename hat eine sehr "übersichtliche"
Synatx und man-page:

NAME
       rename - Rename files

SYNOPSIS
       rename from to file...

DESCRIPTION
       rename  will rename the specified files by replacing the first
       occurrence of from in their name by to.

       For example, given the files  foo1,  ...,  foo9,  foo10,  ...,
       foo278, the commands

              rename foo foo0 foo?
              rename foo foo0 foo??

       will  turn them into foo001, ..., foo009, foo010, ..., foo278.

       And
              rename .htm .html *.htm

       will fix the extension of your html files.


SEE ALSO
       mv(1)



                          1 January 2000                RENAME(1)

That's all folks....

Damit kann ich zwar in der Tat einen bestimmten Buchstaben auf ganz
einfache Weise ändern, beispielsweise das a in atest zu A für Atest:

$ rename atest Atest a*
p10: lutz  ~/Desktop/Tmp
"Was soll ich tun, Meister?"
$ ls
Atest  btest  ctest  ls
p10: lutz  ~/Desktop/Tmp
"Was soll ich tun, Meister?"

Aber ich befürchte, dass ich hier nicht mit regulären Ausdrücken oder
auf sonst eine andere Weise die Großschreibung des ersten Buchstabens
auf alle Dateien anwenden kann.
Jedenfalls ist es mir nach mehreren Versuchen nicht gelungen.

On Thu, 2004-06-03 at 23:48, Oswald Buddenhagen wrote: 
>  
> man mmv

mmv ist leider auch nicht standardmäßig installiert.

Das Problem hierbei ist, das mein Script nahezu auf jeder
Linux-Distribution laufen soll. (ist Teil eines längeren Programms) Ich
hatte gehofft, dass es da irgendeine clevere awk-Lösung oder was
ähnliches mit Standard-Kommandos gibt (mit sed hab' ich mir schon
diesbezüglich die Zähne ausgebissen...).

morgendliche Grüße
Lutz

-- 
Lutz Meinert <lutz.meinert at madvedge.de>





Mehr Informationen über die Mailingliste linux-l