我要同时标准化几个文件的名称,因此我编写了一个正则表达式perl-rename
:
perl-rename 'y/A-Z/a-z/; s/ã|á|â/a/g; s/é|ê/e/g; s/í/i/g; s/õ|ó/o/g; s/ú/u/g; s/ç/c/g; s/(?<=\d-)*\s/_/g; s/_+/_/g; s/(?<=\d)_/-/' *
它完全按照预期工作:
2024-12-01 certidão de matrícula -> 2024-12-01-certidao_de_matricula
然而,我认为它可以简化一点,所以我想到了这一点:
perl-rename 'y/A-Z/a-z/; y/ãáâéêíõóúç/aaaeeioouc/; s/(?<=\d-)*\s/_/g; s/_+/_/g; s/(?<=\d)_/-/' *
但结果却不符合我的预期。例如:
2024-12-01 certidão de matrícula -> 2024-12-01-certidaao_de_matraccula
为什么第二个命令不起作用,因为它应该直接音译每个重音字符?我甚至无法理解结果。提前致谢。