• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Programmtip für Anfänger ?

Bucki

Member
Ich möchte gerne alle Dateinamen in einem Verzeichnis von klein- auf Großschreibung wandeln.
Gibt's hierzu einen Tip ? (shell, Perl oder c oder...) :?:
 

Snubnose

Hacker
Code:
#!/usr/bin/perl -w
use strict;
my @files;
@files = `find . -type f -maxdepth 1`;
my $file;
foreach $file(@files) {
    chomp($file);
    print "$file -> \U$file\n";
    my $command = "/bin/mv $file \U$file";
    `$command`;
}
bitte mit Vorsicht verwenden - im Falschen Verzeichnis kann es richtig schaden anrichten...
 
OP
Bucki

Bucki

Member
Danke !!! :D
Das ist ja super.
Damit kann ich ja erstmal in einer "künstlichen Umgebung" experimentieren, bevor ich es auf die echten Dateien loslasse :wink:
Ist doch ein prima Einstieg :)
 
OP
Bucki

Bucki

Member
Das macht mich jetzt aber neugierig auf Perl.
Das Programm hat prima gearbeitet 8)
Danke nochmal :)
 

TeXpert

Guru
naja, perl ist nett :) aber hierfür erst mal etwas overkill:

Code:
mv -i $f $(echo $f | tr /a-z/ /A-Z/)
ist die gesamte Magie... dabei ist $f eine Variable, die den Dateinamen beinhaltet.

Code:
$ ls -1
a
abc
aBc
b
c
xYZ
ZZZ
$ for f in * ; do mv -i $f $(echo $f | tr /a-z/ /A-Z/) ; done
mv: ,,ABC" überschreiben? n
mv: ,,ZZZ" und ,,ZZZ" sind die gleiche Datei
$ ls -1
A
aBc
ABC
B
C
XYZ
ZZZ

Beachte dabei, dass hier die Rückfrage von dem mv -i kommt... für Dateien mit Leerzeichen bitte passend quoten etc... (kann natürlich auch mit find kombiniert werden)
 
OP
Bucki

Bucki

Member
Habe ich das jetzt richtig als Shellskript erkannt :?: :wink:
Das fängt an, richtig interessant zu werden :D
... dann kann's ja draussen ruhig noch ein bischen weiterschneien und schmuddeln :D
 

TeXpert

Guru
Bucki schrieb:
Habe ich das jetzt richtig als Shellskript erkannt :?: :wink:
Das fängt an, richtig interessant zu werden :D
... dann kann's ja draussen ruhig noch ein bischen weiterschneien und schmuddeln :D

naja, einen 1-Zeiler
Code:
$ for f in * ; do mv -i $f $(echo $f | tr /a-z/ /A-Z/) ; done
als Script zu bezeichnen ;) aber jeder wie er es mag...
 
Oben