Ich habe ein Verzeichnis und einige der Dateierweiterungen sind in Großbuchstaben (.JPG) statt in Kleinbuchstaben.
Ich möchte sicherstellen, dass jede Datei .jpg als Erweiterung hat. Wie würde ich dies an einer Shell-Eingabeaufforderung tun?
Ich habe ein Verzeichnis und einige der Dateierweiterungen sind in Großbuchstaben (.JPG) statt in Kleinbuchstaben.
Ich möchte sicherstellen, dass jede Datei .jpg als Erweiterung hat. Wie würde ich dies an einer Shell-Eingabeaufforderung tun?
Antworten:
Verwenden der Shell-Parametererweiterung :
for f in *.JPG; do
mv "${f}" "${f%%.JPG}.jpg"
done
Die "
Charaktere kümmern sich um Dateinamen, die Leerzeichen enthalten, wie dies bei Fotos häufig der Fall ist.
/path/to/*.JPG
. Sie können natürlich gerne Ihre eigene Antwort einreichen :)
Wenn Sie externe Tools verwenden können (nicht nur Bash), überprüfen Sie den rename
Befehl!
rename .JPG .jpg *
Das rename
ist ein Teil von util-linux
.
perl
die verschiedene Argumente akzeptiert, um dasselbe zu tun.
Ich würde vorschlagen, einen Blick auf den mmv
Befehl zu werfen . Es ist genau für diese Art von Aufgaben geeignet. In Ihrem Szenario wäre es:
#> mmv "*.JPG" "#1.jpg"
Die Manpage ist voller Beispiele, daher dauert es keine Zeit, sich daran zu gewöhnen.
Auf Debian- Systemen kann es installiert werden mit:
#> aptitude install mmv
Wenn die Dateinamen keine Leerzeichen enthalten:
for f in *.JPG; do mv $f `echo $f | sed 's/JPG$/jpg/'`; done
mv
.