Linux下批量修改⽂件名(rename)1.rename命令批量修改⽂件名, 其实linux下可以使⽤别的办法来批量修改⽂件名, 不过rename实在太⽅便了
⽐如把所有的表为cdb1_* 修改为cdb_*的
在本⽬录下
只需要# rename 'cdb1' 'cdb' *
以前都是写个for循环来做...想想多傻啊, 呵呵
rename还有更多的功能, 建议man rename下
2.批量更改⽂件名 rename
通过 man rename 命令可以得知,rename 命令其实是⼀个 Perl 脚本命令,
它专⽤于批量地给多⽂件重命名(rename multiple files)。
命令格式:
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
perlexpr 是⼀种 Perl 脚本格式的正则表达式。
参数:
-v, --verbose
Verbose: print names of files successfully renamed.
详细模式:打印成功更改的⽂件名列表
-n, --no-act
No Action: show what files would have been renamed.
测试模式:并不真正的执⾏命令,⽽只是显⽰哪些⽂件名应该怎么进⾏
更改,⽤于测试模式。
-f, --force
Force: overwrite existing files.
强制模式:在更改⽂件名,如果更改后的⽂件已经存在时覆盖已经存在
的⽂件。
rename 的典型应⽤:
0.批量更改⽂件扩展名
$ ls
<
<
<
<
$ rename 's//.txt//.ext/' *
$ ls
linux循环执行命令脚本
<
<
<
<
1. 批量删除⽂件扩展名
$ ls
<
<
<
<
$ rename 's//.txt//' *
$ ls
1 2 3 4
2. 批量添加⽂件扩展名
$ ls
1 2 3 4
$ rename 's/$//.txt/' *
$ ls
<
<
<
<
3. 按⾃⼰的⽅式批量重命名⽂件
$ ls
<
<
<
<
$ rename 's/(/d)/第$1 章/' *
$ ls
第 1 章.ext 第 2 章.ext 第 3 章.ext 第 4 章.ext
3.
⽅法1:把⽂件名拆分处理,可以任意修改⽂件名
find -name '*.log' -printf %f//n|awk -F'.' '{print $1}'|xargs -i{} mv {}.log xiyun_{}.log
⽅法2:利⽤rename
⼀般的linux下的rename命令⽐较简单
rename 'test' 'xiyun' '*.log'
把⽂件名中的某部分字符串替换掉
ubuntu下的rename命令⽀持正则表达式,因此功能更强⼤。
⽅法3:直接利⽤find和xargs和mv,中间不⽤awk,这样只能添加后缀名,不能修改⽂件名。From:blog.chinaunix/u/22583/showart_1964649.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。