本文共 1259 字,大约阅读时间需要 4 分钟。
Linux系统中,rename
命令有两个版本:C语言版本和Perl语言版本。在早期的Linux发行版中,C语言版本较为常见,但随着Perl语言的兴起,大部分工具开发者使用Perl版本进行改写,这引入了更强大的功能,例如支持正则表达式操作。
要区分命令版本,可以通过以下方式操作:
man rename
,第一行显示RENAME(1)
,例如:RENAME(1) Linux Programmer’s Manual RENAME(1)
RENAME(1)
,但带有“ Perl Programmer’s Reference Guide”说明,例如:RENAME(1) Perl Programmers Reference Guide RENAME(1)
C语言版本:
rename from to file
from
、to
和file
,需要三个参数。例如,将文件名中的log
替换为history
:rename log history log*
.jpeg
扩展名改为.jpg
:rename .jpeg.jpg*.jpeg
Perl版本:
rename [perlexpr] files
.bak
扩展名:rename 's/\.bak$//' *.bak
rename 's/[ ]+/_/g' *
rename 's/^/hello/' *
rename 's/.html$.htm$/' *
批量去掉文件名中的空格:
file name.txt
,可以使用以下命令:rename 's/[ ]+/_/g' *
tr
处理:find . -name "* *" | while read name; do mv "$name" "${name// ' '/_}"; done
替换字符串或扩展名:
.zip
为.zip
:rename 's/.zip$/.zip/' *
hello
:rename 's/^/hello/' *
批量修改文件编号:
rename 's/^/00/' [0-9].jpgrename 's/^/0/' [0-9][0-9].jpg
*.log
改为*.history
:rename log history log*
这些示例展示了rename
命令在不同版本中的能力,尤其是Perl版本支持更灵活的操作,适合处理复杂的文件重命名需求。
转载地址:http://mfzfk.baihongyu.com/