在类似Unix的操作系统上,named命令使用正则表达式重命名多个文件。它由Perl编程语言的创建者Larry Wall编写。
查看英文版
1 rename 运行系统环境
2 rename 描述
3 rename 语法
4 rename 例子
Unix&Linux
rename命名根据正则表达式perlexpr重命名已命名的文件。
如果给定文件未被表达式修改,则不会重命名。如果在命令行上未提供文件名,则将通过标准输入读取文件名。
查看英文版
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
选项
-v,-- verbose | 详细:成功重命名的文件的打印名称。 |
-n,--no-ACT | 无操作:显示要重命名的文件。 |
-f,--force | 强制:覆盖现有文件。 |
Perl表达式:快速概述
所述perlexpr 参数是13759 Perl的编程语言中的正则表达式。Perl正则表达式是一个复杂而细微的主题,但是这里是一个简短的概述:
代换
用一个表达式替换另一个表达式,perlexpr的形式是:
s / expr1 / expr2 / [gi]
...其中,表达式1是描述一个表达式字符串要替换,和表达式2是描述你要替换的字符串的表达式。例如,
s/silly/foolish/
...将用字符串' foolish '代替字符串' silly '的首次出现。
要执行全局替换(即,将expr2替换为expr1的次数与expr1发生的次数一样多),请在替换表达式的末尾添加修饰符g。例如:
s/silly/foolish/g
...无论发生多少次,都将用“silly”代替每次“foolish”的发生。
要以不区分大小写的方式执行匹配,请在替换表达式的末尾添加一个i。例如,
s/silly/foolish/i
...将替代“SILLY”,“Silly”,或“siLLY”与“foolish”。
的g和i改性剂可以在两个相同的表达式来指定,以进行不区分大小写的全局替换,例如:
s/silly/foolish/gi
元字符
甲元字符是一个字符,其具有特殊的含义(或字符)。可以在表达式中使用它们来精确定义应匹配和替换的字符串。
这些是可以在Perl表达式中使用的一些常见的元字符:
元字符 | 意义 | ||||||||||
^ | 匹配字符串的开头。 | ||||||||||
$ | 匹配字符串的结尾。 | ||||||||||
. | 匹配任何字符,除了换行符。 | ||||||||||
* | 匹配零次或多次匹配前面字符或字符组的出现。 | ||||||||||
+ | 一次或多次匹配前一个字符或一组字符的出现。 | ||||||||||
? |
匹配前一个字符或一组字符出现零次或一次。 如果重复修饰符,后使用'?'指定应使用最短的匹配项。例如,' a {2,4}?即使“ aaa ”和“ aaaa ”也匹配,“ ”也会匹配“ aa ” 。请参阅下面的重复修饰符。 |
||||||||||
| | 交替;行为类似于布尔“OR”。例如,“butter|jelly”将与buuter或jelly匹配。 | ||||||||||
( ... ) | 分组。例如,“ (eg | le)gs ”将匹配“eggs”或“legs”。 | ||||||||||
[ ... ] |
一组字符。例如,“ [abc] ”将匹配“ a ”或“ b ”或“ c ”。字符集可以定义为:
|
||||||||||
{ m [ , [ n ]] } | 一个重复修饰符,至少匹配m个字符,最多匹配n个字符。例如, '一个{2} '将匹配' AA ', '一个{2,4} '将匹配' AA ', ' AAA '或' AAAA '和' B {2,} '将匹配两个或更多连续的b个字符。 | ||||||||||
\ | 转义一个元字符,以便按字面意义对待它。例如,“ \ + ”匹配字符“ + ”(而不是具有特殊的含义元字符加号)。 | ||||||||||
\ t | 匹配制表符。 | ||||||||||
\ n | 匹配换行符。 | ||||||||||
\ r | 匹配回车符。 | ||||||||||
\ w | 匹配归类为“单词”字符的任何单个字符(字母数字字符或下划线' _ ')。 | ||||||||||
\ W | 匹配任何单个非“单词”字符。 | ||||||||||
\ s | 匹配任何单个空格字符(空格,制表符,换行符)。 | ||||||||||
\ S | 匹配任何单个非空白字符。 | ||||||||||
\ d | 匹配任何数字字符。此开关等效于字符集' [0-9] ' | ||||||||||
\ D | 匹配任何非数字字符。 | ||||||||||
\ b | 与任何“单词边界”匹配的“零宽度”匹配断言。 | ||||||||||
\ B | 与任何非“单词边界”匹配的“零宽度”匹配断言。 |
翻译
翻译类似于替代。它可以用于将一个字符串转换为另一个字符串。翻译表达式的指定如下:
y / charset1 / charset2 /
...按顺序将字符集charset1中的每个字符转换为字符集charset2中的相应字符。(这些集与上面的字符集一样,只不过您不需要将它们放在方括号中。)例如,翻译表达式:
y / abc / def /
...将每个字母a转换为字母d,每个b转换为e,等等。
这也适用于定义为范围的charset。例如:
y / az / AZ /
将每个小写字母转换为等效的大写字母。
查看英文版
rename 's/\.jpeg$/.jpg/' *
重命名任何扩展名为“ .jpeg ”的文件,使其扩展名为“ .jpg”。
find -type f -name '*.jpg' | rename 's/holiday/honeymoon/'
对于所有扩展名为“ .jpg ”的文件,如果它们包含字符串“ holiday ”,则将其替换为“honeymoon”。例如,此命令会将文件“ ourholiday001.jpg ”重命名为“ ourhoneymoon001.jpg ”。
此示例还说明了如何使用find命令发送扩展名为.jpg(-name'* .jpg')的文件列表(-type f),以通过管道(|)重命名。重命名然后从标准输入中读取其文件列表。
rename 's/\.bak$//' *.bak
重命名所有匹配“ * .bak ”的文件,以去除其扩展名的文件名。例如,此命令会将文件“ project.bak ”重命名为“ project ”。
rename 'y/A-Z/a-z/' *
重命名文件,以便将所有大写字母更改为它们的小写字母。
查看英文版
renice | replace | rm | rmdir | rn | route | rpcinfo | rcp | readlink | rehash | rsh | rlogin | rmmod |
未知的网友