2013-03-07 16 views
1

我想重命名所有特殊字符在許多文件中通過bash下劃線。 因爲我發現我不能使用bash我想用python來做到這一點。 這是我的bash代碼:通過正則表達式大規模重命名 - python解決方法

#!/bin/bash 
find /home/dave/files/ -depth -execdir rename ' 
s/ä/ae/g; 
s/ö/oe/g; 
s/ü/ue/g; 
s/Ä/Ae/g; 
s/Ö/Oe/g; 
s/Ü/Ue/g; 
s/ß/ss/g; 
s/\x3C/_/g; # < 
s/\x3E/_/g; # > 
s/\x5C/_/g; # \ 
s/\x3A/_/g; # : 
s/\x3F/_/g; # ? 
s/\x2A/_/g; # * 
s/\x7C/_/g; # | 
s/\x22/_/g; # " 
' -v "{}" \; 
echo "Done" 

不幸的是我有蟒蛇的經驗非常少,我不找到很多類似的例子。 你能幫助我嗎?

回答

2

創建翻譯字典:

trans = {'ä': 'ae', 
     'Ä': 'Ae', ... } 

可與trans.get(char, char)來訪問,如果翻譯返回解譯的角色,角色本身並非如此。

使用此行翻譯文件名:

new_name = ''.join(trans.get(char, char) for char in old_name) 

現在把你想要重命名和應用的所有文件的列表

os.rename(old_name, new_name)