我运行的是红帽 7.3。
我输入时rename * *.log *
希望log
从所有文件的名称中删除。
我没有发生过这种情况,简而言之,我认为文件正在消失。
答案1
这取决于rename
你的系统上有什么程序(我不记得 RHEL 的程序了)。如果是util-linux 重命名,您可能将第一个文件重命名为第二个文件。事情是这样的。 (为了清楚起见,我将在这里使用rename.ul
。)
对于三个文件 a.log
、 b.log
、 c.log
如果我们给出命令rename.ul * *.log *
,shell 会展开 glob,最终运行的命令是:
rename.ul a.log b.log c.log a.log b.log c.log a.log b.log c.log
现在,rename
将前两个作为模式和替换,并将它们应用到由其余参数命名的文件。因此,基本上该命令告诉a.log
在b.log
任何c.log a.log b.log c.log a.log b.log c.log
.仅a.log
匹配,并且它已移至b.log
,并且您可能会收到一条错误消息下一个 a.log
列出。
如果你rename
是Perl重命名( prename
) 相反,您可能会收到错误而没有发生任何事情,因为您的第一个文件名可能不是有效的 Perl 命令。prename
默认情况下也不会覆盖文件。
通过 util-linux 重命名,要从.log
文件名中删除,您可以使用
$ rename.ul .log "" *.log
这也会改变名称中间的任何匹配项,因此v.logger
会变成vger
.
通过 Perl 重命名,命令将是
$ prename 's/\.log$//' *.log