bash中重命名文件一般是使用内置命令mv来完成的。mv的本质含义是移动一个文件,在bash中使用它则无须在文件系统中查找命令文件。
然而mv的语法受到很多限制,如果你需要重命名一批文件的话,它就不合适了。
幸运的是还有 rename 这条命令,而且在绝大多数 linux 发行版中,rename都是存在的并且表现一致。
RENAME
批量重命名可以使用 rename 命令,这个命令允许你使用正则式完成一堆文件名的策略性重命名操作。
rename的语法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Usage:
rename [ -h|-m|-V ] [ -v ] [ -n ] [ -f ] [ -e|-E *perlexpr*]*|*perlexpr*
[ *files* ]
Options:
-v, -verbose
Verbose: print names of files successfully renamed.
-n, -nono
No action: print names of files to be renamed, but don't rename.
-f, -force
Over write: allow existing files to be over-written.
-h, -help
Help: print SYNOPSIS and OPTIONS.
-m, -man
Manual: print manual page.
-V, -version
Version: show version number.
-e Expression: code to act on files name.
May be repeated to build up code (like "perl -e"). If no -e, the
first argument is used as code.
-E Statement: code to act on files name, as -e but terminated by
';'.
你可以这样来使用它:
1
rename 's/\.JPG/.jpg/' *.JPG
如果你有 foo1, …, foo9, foo10, …, foo278 等一组文件,那么如下的两条命令:
1
2
rename foo foo0 foo?
rename foo foo0 foo??
能够将这些文件重命名为 foo001, foo002, …, foo278。
以下命令修正文件的后缀名,将所有 .htm 后缀都修改为 .html:
1
rename .htm .html *.htm
以下命令将大写改为小写:
1
rename 's/A-Z/a-z/' *
留下评论