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

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

手册页给出两个例子:

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

所以要么是 s,要么是 y,然后/replaceThis/withThis

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

答案1

在第一种情况下:

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

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

第二种情况:

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

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

我建议你看一下手册页sed了解更多命令和详细信息。我相信“s”命令最常用。此外,正则表达式(第 7 节)perl 文档也可能有帮助。特别是,这里有一个教程关于 perl 和正则表达式。


man sed

s/正则表达式/替换/    
       尝试将正则表达式与模式空间进行匹配。如果成功
       ful,用替换替换匹配的部分。
       替换可能包含特殊字符 & 来指代该
       模式空间中匹配的部分,以及特殊的
       转义 \1 到 \9 以引用相应的匹配
       正则表达式中的子表达式。

y/源/目标/  
       音译模式空间中出现的字符
       源中对应于目标中的字符。

相关内容