rename命令是在Linux和Unix系统中使用的一个命令,用于批量重命名文件或目录。
C语言版本, 支持通配符, Centos(7)默认的是C语言版本,如果返回结果中包含 util-linux , 说明是C语言版本, 反之是Perl版本。
[root@jeven ~]# rename --version
rename from util-linux 2.23.2
常用通配符说明
Perl版本, 支持正则表达式,Ubuntu(18),Mint(20)默认的是Perl版本。
root@ubuntu-server001:~# rename --version
/usr/bin/rename using File::Rename version 1.30, File::Rename::Options version 1.10
常用正则表达式符号说明
rename [选项] 表达式 替换的字符 文件...
以下是rename命令的help帮助信息
[root@jeven ~]# rename --help
Usage:
rename [options] expression replacement file...
Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target
-h, --help display this help and exit
-V, --version output version information and exit
For more details see rename(1).
下面是rename命令的常用选项
-v, --verbose : 显示详细的操作信息
-s, --symlink : 对符号链接目标进行操作
-h, --help : 显示帮助信息并退出
-V, --version : 显示版本信息并退出
原测试目录下,我们创建三个测试文件。
[root@jeven test]# ls
aa.txt bb.txt cc.txt
将三个文件的后缀批量修改为pdf
[root@jeven test]# rename -v txt pdf aa.txt bb.txt cc.txt
`aa.txt' -> `aa.pdf'
`bb.txt' -> `bb.pdf'
`cc.txt' -> `cc.pdf'
创建多个测试文件
touch file0{1..999}
将file01-file09,修改为afile01-afile09。
[root@jeven test]# rename -v file afile file0?
`file01' -> `afile01'
`file02' -> `afile02'
`file03' -> `afile03'
`file04' -> `afile04'
`file05' -> `afile05'
`file06' -> `afile06'
`file07' -> `afile07'
`file08' -> `afile08'
`file09' -> `afile09'
目录中有file1.txt、file2.txt、file3.txt文件,要将所有文件名中的"file"替换为"doc"。
[root@jeven test]# ls
file1.txt file2.txt file3.txt
[root@jeven test]# rename -v 'file' 'doc' *.txt
`file1.txt' -> `doc1.txt'
`file2.txt' -> `doc2.txt'
`file3.txt' -> `doc3.txt'
ubuntu下rename命令的基本语法
rename [ -h|-m|-V ] [ -v ] [ -0 ] [ -n ] [ -f ] [ -d ] [ -e|-E perlexpr]*|perlexpr [ files ]
下面是rename命令的常用选项
-v, --verbose:打印成功重命名的文件名。
-0, --null:从标准输入读取时使用\0作为记录分隔符。
-n, --nono:不执行实际的重命名操作,只打印要被重命名的文件名。
-f, --force:覆盖已存在的文件。
--path, --fullpath:重命名包括目录组件在内的完整路径,默认选项。
-d, --filename, --nopath, --nofullpath:只重命名文件名部分,不包括目录。
-h, --help:打印帮助信息。
-m, --man:打印手册页。
-V, --version:显示版本号。
-u, --unicode [encoding]:将文件名视为Perl(Unicode)字符串,运行用户提供的代码。
使用encoding对文件名进行解码/编码,如果存在的话。
encoding是可选的:如果省略,则下一个参数应该是以'-'开头的选项,例如-e。
-e:表达式:对文件名执行操作的代码。
可以重复使用来构建代码(类似于 "perl -e")。如果没有-e,第一个参数将被用作代码。
-E:语句:与-e相同,但以';'结尾的代码。
创建本地测试文件
root@ubuntu-server001:~/test# touch file{1..5}.txt
root@ubuntu-server001:~/test# ls
file1.txt file2.txt file3.txt file4.txt file5.txt
将所有文件的后缀名改为pdf
root@ubuntu-server001:~/test# rename -v "s/txt/pdf/g" file{1..5}.txt
file1.txt renamed as file1.pdf
file2.txt renamed as file2.pdf
file3.txt renamed as file3.pdf
file4.txt renamed as file4.pdf
file5.txt renamed as file5.pdf
批量添加所有文件后缀为.a
root@ubuntu-server001:~/test# rename -v "s/$/.a/" *
file1.pdf renamed as file1.pdf.a
file2.pdf renamed as file2.pdf.a
file3.pdf renamed as file3.pdf.a
file4.pdf renamed as file4.pdf.a
file5.pdf renamed as file5.pdf.a
将所有文件的后缀名.a去掉
root@ubuntu-server001:~/test# rename -v "s/.a//" *
file1.pdf.a renamed as file1.pdf
file2.pdf.a renamed as file2.pdf
file3.pdf.a renamed as file3.pdf
file4.pdf.a renamed as file4.pdf
file5.pdf.a renamed as file5.pdf
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。