将 10 位数字移动到文件名开头

将 10 位数字移动到文件名开头

我有数千个文件需要重命名。它们都包含一个以“42469”开头的 10 位数字。我需要将每个文件中的这 10 位数字移到文件名的开头并添加下划线。示例:

Original - HOLZHEAUSER GAS UNIT_ 2_4246932863_2.pdf
Result -   4246932863_HOLZHEAUSER GAS UNIT_2_2.PDF

有人能帮我吗?提前谢谢您!

我并不是一个真正有经验的脚本用户/程序员,所以我的选择是在 Powershell 中执行此操作。我在 Powershell 中尝试了这两个建议,但没有任何成功。

答案1

使用韓國使用通配符匹配重命名文件:

$ touch 'HOLZHEAUSER GAS UNIT_ 2_4246932863_2.pdf'
$ mmv '*_ ?_*_?.*' '#3_#1_#2_#4.#u5'
$ ls
'4246932863_HOLZHEAUSER GAS UNIT_2_2.PDF'

答案2

您可以使用 perlrename工具:

rename -n 's/(.*?)(\d{10}_)(.*?)/$2$1$3/' *

s/pattern/replacement/表示用给定的替换替换与模式匹配的文本。与括号内的模式匹配的文本将被保存,并可分别使用$1$2和在替换字符串中按所需顺序反向引用$3

注意,-n意思是:仅当您对结果满意时才No action: print names of files to be renamed, but don't rename.删除运行操作。-n

答案3

你也可以使用 来完成此操作sed。此命令应该可以准确执行你想要的操作:

ls | sed -r 's/(.*) 2_(42469)([0-9]+)_2(.*)/"&" "\2\3_\12_2\4"/' | xargs -L1 mv -v

相关内容