Ser*_*rge 7 regular-expression rename
新手在这里...只是尝试使用将名称中包含 2 个点的文件名更改为单个点
rename 's/.././' filename
Run Code Online (Sandbox Code Playgroud)
该文件已消失,但我不认为它已被删除,因为内存中仍有相同数量的空间。这个文件会被发送到哪里?
pLu*_*umo 20
.lename现在调用该文件。
(这是假设filename之前调用过该文件,我猜您的“真实”文件将具有不同的名称。但是无论文件如何调用,前两个字符已被替换为.。)
这是因为正则表达式中的点是一个特殊字符,意思是匹配任何字符。所以,..是任意两个字符。作为rename唯一的,除非你添加替换第一场比赛全球修饰符(g),您给的文件名的前两个字符已被替换。
请注意,in 中的“替换”s/regex/replacement/modifiers不是正则表达式,因此表达式.右侧的s/.././可以按预期工作。
现在,您的文件在哪里:
以 a 开头的.文件是隐藏文件。因此,您不会通过运行看到它们ls。运行ls -a以显示这些文件。
使用重命名您的文件 mv .lename filename
下一次,转义正则表达式特有的字符:
rename 's/\.\././' filename
Run Code Online (Sandbox Code Playgroud)
此外,您可以rename -n ...在执行实际重命名之前进行试运行并检查结果。那会向你展示这样的东西:
rename(filename, .lename)
Run Code Online (Sandbox Code Playgroud)