Grundsätzlich richtiger Ansatz. Allerdings sollte man folgendes bedenken:Mystefix schrieb:for i in `ls -1 Ordner`; do mv $i $i.dateiendung; done
ls -1 gibt dir nur die Dateien in dem Verzeichnis aus und das mv benennt dann die Datei in Datei+Dateiendung um.
Ich glaube, diese Diskussion hatten wir hier im Forum schon mehrfach. Der einzige Grund, warum manche an dieser Stelle ls nehmen, ist die Tatsache, dass die for-Schleife nicht durchlaufen wird, falls der ls keine Treffer findet. Bei einer Wildcard-Lösung würde die Schleife trotzdem durchlaufen.jengelh schrieb:for i in `ls -1 ...` macht allein schon Probleme mit Leerzeichen sofern man nicht mit IFS hantiert, also lassen wir das gleich, und verwenden einfach Wildcards.
abgdf schrieb:Linux identifiziert Dateien eigentlich gar nicht anhand von Dateiendungen. Das ist eher DOS-Style.
jengelh schrieb:for i in `ls -1 ...` macht allein schon Probleme mit Leerzeichen sofern man nicht mit IFS hantiert, also lassen wir das gleich, und verwenden einfach Wildcards.
abgdf schrieb:Sind das viele verschiedene Arten von Dateien (schwieriger) oder z.B. nur "jpg" und "mp3" (einfacher) ?
Wobei hier der Vorschlag mit dem Befehl "file" auch nicht schlecht ist. So könnte man gif, jpg, tiff usw. unterscheiden. Oder sind das alles jpg?K4m1K4tz3 schrieb:Es sind ne Menge Bilder, die aus irgend nem Grund keine Endung haben.
#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-
import os
DIR = os.getcwd()
filenames = os.listdir(DIR)
for i in filenames:
CH = os.popen("file " + i)
ftype = CH.read().rstrip("\n")
if "JPEG" in ftype and not i.endswith(".jpg"):
os.rename(DIR + "/" + i, DIR + "/" + i + ".jpg")
print "Renamed:\t" + i + "\t" + i + ".jpg"