今天又学习了一下rename,是一个配合正则表达式来重命名的一个强大工具。照我的习惯先看一下帮助文件。
这是man rename的显示:
rename没有--help选项,如果rename --help查看后会提示:rename(3tcl) Tcl Built-In Commands rename(3tcl)
_________________________________________________________________________________________________
NAME
rename - 重命名或删除一个命令
总览 SYNOPSIS
rename oldName newName
_________________________________________________________________
描述 DESCRIPTION
把 过 去叫做 oldName 的命令重命名为叫做 newName。如果 newName 是一个空串则删除叫做 oldName
的命令。oldName 和 newName 可以包括名字空间限定符(包含名字空间的名字)。如果一个命令被重 命
名 到一个不同名字空间中,将来对它的调用将在新的名字空间中执行。rename 命令返回一个空串作为
结果。
参见 SEE ALSO
namespace(n), proc(n)
关键字 KEYWORDS
command, delete, namespace, rename
[中文版维护人]
寒蝉退士
[中文版最新更新]
2001/10/28
《中国 Linux 论坛 man 手册页翻译计划》:
http://cmpp.linuxforum.net
Tcl rename(3tcl)
代码: 全选
Unknown option: ?
Usage: rename [-v] [-n] [-f] perlexpr [filenames]
新建一个test目录,下面放入a,b,c,d,e五个文件。
代码: 全选
mkdir test
cd test
touch a b c d e
代码: 全选
a b c d e
代码: 全选
rename 's/$/.txt/' *
代码: 全选
a.txt b.txt c.txt d.txt e.txt
代码: 全选
rename 's/.txt//' *
代码: 全选
a b c d e
代码: 全选
rename 's/^/test-/' *
代码: 全选
test-a test-b test-c test-d test-e
代码: 全选
rename 's/test-//' *
现将每个文件都加后缀.txt,然后将每个文件名都由小写改为大写
代码: 全选
rename 's/$/.txt/' *; rename 'y/a-z/A-Z/' *
代码: 全选
A.TXT B.TXT C.TXT D.TXT E.TXT
代码: 全选
rename 'y/A-Z/a-z/' * -v
代码: 全选
A.TXT renamed as a.txt
B.TXT renamed as b.txt
C.TXT renamed as c.txt
D.TXT renamed as d.txt
E.TXT renamed as e.txt
代码: 全选
a.txt b.txt c.txt d.txt e.txt
rename 's/.txt//' * -n
这是测试显示,与执行过程显示是一样的:
代码: 全选
a.txt renamed as a
b.txt renamed as b
c.txt renamed as c
d.txt renamed as d
e.txt renamed as e
代码: 全选
a.txt b.txt c.txt d.txt e.txt
单引号后面第一个字母为什么是s?是start还是select?不知道,于是用rename '字母/^/0/' * -n测试了一下其它字母,发现从a到z,m,q,s是有定义的,其中s正常显示执行过程,m与q显示为:
代码: 全选
Number found where operator expected at (eval 1) line 1, near "m/^/0"
syntax error at (eval 1) line 1, near "m/^/0"
代码: 全选
syntax error at (eval 1) line 1, near "/^"
代码: 全选
Bareword found where operator expected at (eval 1) line 1, near "m/a-z/A"
syntax error at (eval 1) line 1, near "m/a-z/A"
代码: 全选
Warning: Use of "-z" without parentheses is ambiguous at (eval 1) line 1.
syntax error at (eval 1) line 1, near "a-z"
代码: 全选
rename '*/^/0/' * -n
Argument "*main::/" isn't numeric in bitwise xor (^) at (eval 1) line 1.
Argument "*main::/" isn't numeric in bitwise xor (^) at (eval 2) line 1.
Argument "*main::/" isn't numeric in bitwise xor (^) at (eval 3) line 1.
Argument "*main::/" isn't numeric in bitwise xor (^) at (eval 4) line 1.
Argument "*main::/" isn't numeric in bitwise xor (^) at (eval 5) line 1.
代码: 全选
rename '^/^/0/' * -n
syntax error at (eval 1) line 1, near "^"
代码: 全选
rename '$/^/0/' * -n
Argument "\n" isn't numeric in bitwise xor (^) at (eval 1) line 1.
Argument "\n" isn't numeric in bitwise xor (^) at (eval 2) line 1.
Argument "\n" isn't numeric in bitwise xor (^) at (eval 3) line 1.
Argument "\n" isn't numeric in bitwise xor (^) at (eval 4) line 1.
Argument "\n" isn't numeric in bitwise xor (^) at (eval 5) line 1.
代码: 全选
rename '-/^/0/' * -n
Unknown option: /
Unknown option: ^
Unknown option: /
Unknown option: 0
Unknown option: /
Usage: rename [-v] [-n] [-f] perlexpr [filenames]