rename
本文最后更新于 1027 天前,其中的信息可能已经有所发展或是发生改变。

虽然 mv 可以重命名文件或目录,但是不可以批量重命名也不支持正则表达式(不写脚本的情况下)

幸好Linux系统下还有个rename命令可以使用,而且支持批量重命名和正则表达式。

rename有两个版本,一种是c语言版本、一种是Perl版本,c版本比较古老,几乎已经绝迹,这句话我是从网上看见的,但是事实证明还没绝迹,至少centos6.7就是c语言版本的。

Perl版本的更加强大,支持正则表达式,需要就是这个版本,google了一下找到了一个简略版。

地址:http://docstore.mik.ua/orelly/perl/cookbook/ch09_10.htm#ch09-40514

代码:

#!/usr/bin/perl -w
# rename - Larry's filename fixer
$op = shift or die "Usage: rename expr [files]\n";
chomp(@ARGV = <STDIN>) unless @ARGV;
for (@ARGV) {
$was = $_;
eval $op;
die [email protected] if [email protected];
rename($was,$_) unless $was eq $_;
}

保存为 rename,加上可执行权限就可以了

用法参考:

rename 's/\.orig$//' *.orig
rename 'tr/A-Z/a-z/ unless /^Make/' *
rename '$_ .= ".bad"' *.f
rename 'print "$_: "; s/foo/bar/ if =~ /^y/i' *
find /tmp -name '*~' -print | rename 's/^(.+)~$/.#$1/'

应用实例:

1. 批量修改文件后缀

./rename 's/\.htm$/\.html/' *.htm

2. 批量去除文件.bak后缀

./rename 's/\.bak$//' *.bak

3. 批量添加.txt后最

rename 's/$/\.txt/' *

4. 批量文件开头加上hello字符串

rename 's/^/hello/' *

5. 批量替换小写字母为大写

rename 'y/a-z/A-Z/' *

6. 批量去除文件名中的空格

rename 's/[ ]+//' *

7. 批量去除文件名的前缀

rename 's/^\[*.*\]//' *
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇