我们在应用程序(在 Windows 上运行)中收到了文件列表作为输入。这些文件是使用脚本自动从数据库中提取的。
显然,有些名称包含特殊字符(如重音符号),这些字符在我们这边呈现为“©”。
如何以编程方式重命名这些文本文件(大约 900'000)以摆脱这个字符?我们不能更改源,也不能重新提取文件。问题是由于这个字符,我们系统中涉及的另一个程序不接受这些文件。
看看 unix 命令rename
。它允许您将 perl 正则表达式应用于一堆文件的名称。在这种情况下,您可能需要以下内容:
$ rename 's/[^a-zA-Z0-9]//' *
在 debian 中,该rename
命令是perl
软件包的一部分。它也应该在 CPAN 上可用。
我最终创建了一个新脚本来读取输入文件并在其标题中搜索特殊字符。
这确实很容易:
string filename = filename.Replace("©", "e");
由于“©”在文件名中,脚本(在 C# 中)能够识别它并相应地替换匹配项。通过这种方式,我可以遍历所有文件夹和子文件夹,只需读取文件名并更改特殊字符。
感谢大家的贡献!