[LINUX + PYTHON] Klein und Großschreibung von Dateien und Ordnern

12/17/2010 20:58 DurtyFree#1
Hallo, ich habe ein kleines Problem mit Linux, Linux nimmt die Klein und Großschreibung von Dateien und Ordnern ja sehr ernst, im gegensatz zu Windows. Naja nun hat hier so ein "trottel" der zu faul war alles klein zu schreiben manche Ordner und Dateien klein geschrieben (Ein GarrysMod Addon ^^). Nun ist das Addon nicht mehr für Linux kompatible... Nun ich hab von einem Freund ein Python Script bekommen dass alle Ordner und Dateien Namen klein schreiben sollte, aber dies funktionirt nicht so richtig. Er tuht es nur teilweise umbennen. Hier mal der derzeitige Code:

Code:
import os
import string
import sys
try:
rootdir = sys.argv[1]
print "GMod Linux Compatibility Script v0.0.1";
print "You are about to lowercase every directory"
print "Press <Enter> to continue";
raw_input();
fileList = []
for root, subFolders, files in os.walk(rootdir):
for file in files:
fileList.append(os.path.join(root,file))
for rnfile in fileList:
try:
print "Renaming "+rnfile+" to "+string.lower(rnfile)
os.rename(rnfile,string.lower(rnfile))
except:
print "Skipping "+rnfile
for subFolders in os.walk(rootdir):
try:
print "Renaming DIR "+subFolders[0]+" to "+string.lower(subFolders[0])
os.rename(subFolders[0],string.lower(subFolders[0]))
except:
print "Skipping DIR "+subFolders[0]

except:
print "USAGE: python recrename.py <directory>"
Ich hoffe dass mir einer ein Script machen kann oder vielleicht dieses korigieren könnte, so dass es sauber und zuverlässlich funktionirt.

MFG DurtyFree
12/21/2010 00:07 vst0rm#2
hi DurtyFree,
hier ein bash Script das sollte gehen.
Das Script in das gewüntschte Verzeichnis legen und mit " bash scriptname.sh " ausführen.
Das Script geht dann rekursiv alle Dateien + Unterverzeichnisse durch
Stelle auch sicher das du die benötigten Rechte hast um Dateien umzubenennen.
a so mach lieber ein Backup vorher ... habs nur kurz getestet man weiß ja nie ;-)


PHP Code:
#!/bin/bash

find | while read file
do
    
newFile="$(echo ${file} | tr 'A-Z' 'a-z')"
    
if [ $file != $newFile ]
     
then    
        mv 
-nf $file $newFile
    fi
done