Linux 遍歷目錄下面所有文件,將目錄名、文件名轉為小寫


當你從 Windows 服務器換到 Linux 服務器的時候,以前的上傳目錄的目錄名、文件名會遇到大小寫的問題。在 Windows 環境下面沒有文件區分大小寫的概念,而 Linux 卻有嚴格的文件名大小寫區分。 這樣一來但來自 Windows 服務器上面那些文件就有可能遇到因為文件名中帶有大寫字母而無法被找到。需要將這些文件的文件名從大寫轉換為小寫字母…

我需要遍歷目錄、子目錄下的所有文件,當然也包括目錄名稱,於是自己寫了一個

#!/usr/bin/python 
import os, sys,re 
print "Auto convert Upper filename to Lower filename" 
dir = '/image'
print "find files..."
for root,dirs,files in os.walk(dir):
    print root
    print str(len(files)) + " found."
    os.rename(root,root.lower())
    for f in files:
        filename = root.lower() + "/" + f
        if re.search('[A-Z]',filename) != None:
            print filename
            newfilename = filename.lower()
            print "Renaming", f, "to", f.lower(), "..."
            os.rename(filename, newfilename)
Python

修改dir目錄即可

優化版本(yip修改):

#!/usr/bin/python 
import os, sys,re 
print "Auto convert Upper filename to Lower filename" 
dir = '/data/dandantang/Web/Resource/image/'
print "find files..."
i=0

def func WalkHere(dir):
    for root,dirs,files in os.walk(dir):
        for f in files:
            filename = root + "/" + f
            if re.search('[A-Z]',f) != None:
                print filename + " found."
                newfilename = root + "/" + f.lower()
                print "Renaming", f, "to", f.lower(), "..."
                os.rename(filename, newfilename) 
        for one in dirs:
            filename = root + "/" + one
            if re.search('[A-Z]',one) != None:
                print filename + " found."
                newfilename = root + "/" + one.lower()
                print "Renaming Dir", one, "to", one.lower(), "..."
                os.rename(filename, newfilename)#this change dirs so,we have to walk this Route Again
                WalkHere(newfilename)
python

 將當前目錄文件名轉化為大寫
for n in * ; do mv $n `echo $n | tr '[:lower:]' '[:upper:]'`; done


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM