正则表达式 - 从EOL找到第n个位置

roy*_*att 1 regex linux bash perl

我有一个文件名目录,其中缺少点,这标志着文件扩展名的开头:

filename1jpg 
filename2JPG 
filename3MPG
Run Code Online (Sandbox Code Playgroud)

我现在想.在行的末尾添加一个第三个位置,以便将文件名重命名为:

filename1.jpg 
filename2.JPG
filename3.MPG
Run Code Online (Sandbox Code Playgroud)

最方便的可能是rename在shell上,但我无法想象一个正则表达式.有人能帮我吗?

Avi*_*Raj 5

您可以在文件所在的目录上尝试以下rename命令.

rename 's/(...)$/.$1/' *
Run Code Online (Sandbox Code Playgroud)

$表示线锚的结束.并()称为捕获组,用于捕获字符.所以,(...)$这个捕获组将夺取最后三个字符,并保存到组指数1.然后匹配的子字符串(后三个字符)替换为一个圆点加群指数1(里面的人物最后三个字符).