命令“rename * *.log *”有什么作用?

命令“rename * *.log *”有什么作用?

我运行的是红帽 7.3。

我输入时rename * *.log *希望log从所有文件的名称中删除。

我没有发生过这种情况,简而言之,我认为文件正在消失。

答案1

这取决于rename你的系统上有什么程序(我不记得 RHEL 的程序了)。如果是util-linux 重命名,您可能将第一个文件重命名为第二个文件。事情是这样的。 (为了清楚起见,我将在这里使用rename.ul。)

对于三个文件 a.logb.logc.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.logb.log任何c.log a.log b.log c.log a.log b.log c.log.仅a.log匹配,并且它已移至b.log,并且您可能会收到一条错误消息下一个 a.log列出。

如果你renamePerl重命名( prename) 相反,您可能会收到错误而没有发生任何事情,因为您的第一个文件名可能不是有效的 Perl 命令。prename默认情况下也不会覆盖文件。


通过 util-linux 重命名,要从.log文件名中删除,您可以使用

$ rename.ul .log "" *.log

这也会改变名称中间的任何匹配项,因此v.logger会变成vger.

通过 Perl 重命名,命令将是

$ prename 's/\.log$//' *.log

相关内容