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