python - 通过正则表达式批量重命名 - python 解决方法

标签 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/_/g; # \
s/\x3A/_/g; # :
s/\x3F/_/g; # ?
s/\x2A/_/g; # *
s/\x7C/_/g; # |
s/\x22/_/g; # "
' -v "{}" \;
echo "Done"

不幸的是,我对 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)

关于python - 通过正则表达式批量重命名 - python 解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15273873/

相关文章:

linux - 如何检查sed是否更改了文件

linux - 如何使用 shell 脚本执行命令并将文件存储在文件夹中?

python - 为什么 --packages 命令让 python 包不可用或无法从 Spark 客户端/驱动程序加载?

python - Django:根据查询集中的日期名称创建逗号分隔列表

Python GUI实现方向

regex - 如何在Powershell中使用此正则表达式字符串?

python - 如何为 tensorflow 构建 docker 镜像?

java - JAVA中的正则表达式最多一个点

c# - 你能建议一个正则表达式来捕获这段文字吗?

linux - bash 将输出存储为变量