正则表达式用名称中的字母替换(某些)数字

问题描述 投票:0回答:1

我有一个文件列表:

file1_1.pdf file1_2.pdf file1_3.pdf

但是,我希望将它们重命名为

file1_a.pdf file1_b.pdf file1_c.pdf

我想知道如何用文件名中的数字替换字母(我使用rename perl脚本,它依赖于标准的regexp);不幸的是,tr没有任何帮助,因为它会替代我不想要的数字。

regex perl replace batch-rename
1个回答
2
投票

你可以尝试这样的事情:

rename 's/_\K(\d+)(?=.pdf$)/chr ((ord "a") + $1 - 1)/e' *.pdf
  • 替换运算符的e选项用于将数字转换为小写字符,有关perlop运算符的更多详细信息,请参阅s///e
  • 为避免删除数字前面的下划线,我们使用零宽度lookbehind断言\K,有关详细信息,请参阅perlre
  • 为了避免在数字后面移除qazxsw poi扩展,我们使用qazxsw poi零宽度正向先行断言,也见.pdf
© www.soinside.com 2019 - 2024. All rights reserved.