通过正则表达式进行大规模重命名-python变通方法

通过正则表达式进行大规模重命名-python变通方法,python,regex,bash,recursion,rename,Python,Regex,Bash,Recursion,Rename,我想通过bash将许多文件中的所有特殊字符重命名为下划线。 因为我发现我不能使用bash,所以我想用python来实现这一点。 这是我的bash代码: #!/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

我想通过bash将许多文件中的所有特殊字符重命名为下划线。 因为我发现我不能使用bash,所以我想用python来实现这一点。 这是我的bash代码:

#!/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"
#/bin/bash
查找/home/dave/files/-depth-execdir重命名'
s/A/ae/g;
s/O/oe/g;
s/U/ue/g;
s/E/Ae/g;
s/Ö/Oe/g;
s/Ü/Ue/g;
s/223/ss/g;
s/\x3C/uG;#<
s/\x3E/\ug;#>
s/\x5C/ug;#\
s/\x3A/ug;#:
s/\x3F/ug;#?
s/\x2A/\ug;#*
s/\x7C/ug/g;#|
s/\x22/\ug;#"
'-v“{}”\;
回音“完成”
不幸的是,我对python几乎没有经验,也没有找到很多类似的例子。
你能帮我吗?

创建一本有翻译的词典:

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)