今天在修改一个文件名时,忽然想起来除了mv之外貌似还有一个rename的命令可以修改文件名,就理所当然地rename XXX YYY,居然没反应。
其实在mv和rename都是可以改文件名的,mv比较简单,直接mv xxx yyy就可以修改了,不过它只能修改单个文件,如果你遇到要把几百个.html修改为.htm的话,几百个够你磨一段时间的,这里我们使用rename,它能够批量修改文件名。
这里我们man rename一下:
RENAME(1) Linux Programmer’s Manual RENAME(1)
NAME
rename - Rename files
SYNOPSIS
rename from to file...
rename -V
DESCRIPTION
rename will rename the specified files by replacing the first occurrence of from in their name by to.
-V, --version
Display version information and exit.
For example, given the files
foo1, ..., foo9, foo10, ..., foo278, the commands
rename foo foo0 foo?
rename foo foo0 foo??will turn them into foo001, ..., foo009, foo010, ..., foo278.
And
rename .htm .html *.htm
will fix the extension of your html files.
SEE ALSO
mmv(1), mv(1)
AVAILABILITY
The rename command is part of the util-linux-ng package and is available from ftp://ftp.kernel.org/pub/linux/utils/util-
linux-ng/.
1 January 2000 RENAME(1)
rename除了给单个文件重命名,还可以批量文件重命名。同时,值得注意一点的是,rename命令是带3个参数而不是很多人认为的2个参数.
举个例子:我想吧test.tar.gz修改为backup.tar.gz
# rename test backup *.tar.gz
这样就可以了。其中解释一下:
第一个参数:被替换掉的字符串
第二个参数:替换成的字符串
第三个参数:匹配要替换的文件模式
再举个例子:我们要把200个.html后缀的文件修改为.htm后缀
# rename .html .htm * 或者 rename html htm *.html
rename支持通配符,基本的通配符有以下几个:
? 可替代单个字符
* 可替代多个字符
[charset] 可替代charset集中的任意单个字符
例:
rename 'tr/A-Z/a-z/' * // 把所有文件名中的大写改为小写