重命名-“ s //”与“ y //”是什么意思?


9

手册页给出了两个例子:

rename 's/\.bak$//' *.bak
rename 'y/A-Z/a-z/' *

所以它是s或y然后 /replaceThis/withThis

前导s和y是什么意思?还有其他选择吗?

Answers:


12

在第一种情况下:

rename 's/\.bak$//' *.bak

您正在针对文件名运行正则表达式,并将表达式的匹配部分(文件名结尾的.bak)替换为第二个表达式(为空)。

在第二种情况下:

rename 'y/A-Z/a-z/' *

您正对正则表达式模式空间进行匹配并音译到目标。换句话说,范围AZ更改为范围az,从而使文件名小写。

我建议您查看sed的手册页以获取更多命令和更多详细信息。我相信最常使用's'命令。同样,正则表达式(第7节)和perl文档也可能会有所帮助。特别是,这是有关perl和正则表达式的教程


来自man sed

s / regexp / replacement /    
       尝试将正则表达式与模式空间进行匹配。如果成功-
       充分,请替换与替换匹配的那部分。的
       替换内容可能包含特殊字符&来表示
       模式空间的匹配部分,以及特殊
       转义\ 1到\ 9以引用相应的匹配项
       正则表达式中的子表达式。

y /来源/目标/  
       音译出现在模式空间中的字符
       在源代码中对应于dest中的相应字符。

非常感谢-考虑到它的多种实现,尤其是在任何给定的Linux发行版和OSX之间,我不确定让人们指望“ sed”是最好的主意
aaaaaa

@aaaaaa该站点专门关于Ubuntu。
wjandrea
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.