当前位置:  开发笔记 > 编程语言 > 正文

如何使用Perl轻松批量重命名文件?

如何解决《如何使用Perl轻松批量重命名文件?》经验,为你挑选了2个好方法。

我有很多文件我正在尝试重命名,我试图制作一个正则表达式来匹配它们,但即使我被卡在文件上也被命名为:

文件名01

文件名100

文件名02

文件名03

等,我想在任何小于100的文件后面添加一个"0"(零),如下所示:

文件名001

文件名100

文件名002

文件名003

我最接近匹配他们的是使用这个find -type d | sort -r | grep'[1-9] [0-9] $'然而我无法弄清楚如何更换它们.提前感谢您提供给我的任何帮助.我在CentOS上如果有任何帮助,这一切都是通过SSH完成的.



1> Jeff B..:
perl -e 'foreach $f (glob("File\\ Name*")) { $nf = $f; $nf =~ s/(\d+)$/sprintf("%03d",$1)/e; print `mv \"$f\" \"$nf\"`;}'

有点矫枉过正,但它确实有问题.



2> hobbs..:
find . -type d -print0 | xargs -0 rename 's/(\d+)/sprintf "%03d", $1/e' 

或类似的东西,提供

    你有GNU find和GNU xargs(for -print0-0)

    你有perl附带的'rename'实用程序

    文件名中只有一组数字.如果有多个,那么你需要对正则表达式做一些事情,使它只匹配你想要重新格式化的数字.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有