重命名带有任何扩展名的perl文件

编程学习者

我希望能够重命名具有不同扩展名的perl文件,只要文件名相同即可。例如,

ExampleFile.txt
ExampleFile.html
FirstFile.txt

我希望我可以在Linux上使用Perl单行代码来更改包含字符串“ ExampleFile”作为名称的文件,而不管其扩展名是“ FinalFile”如何,但不适用于任何其他文件(例如“ FirstFile”)。我一直在调查,rename但似乎无法弄清楚如何将其用于任何文件扩展名。

这样做rename "$findstring.*", "$replacestring.*";似乎不起作用,因为perl无法识别*代表任何文件扩展名。

这是一个示例代码,可以显示我的问题。

#!/usr/bin/perl
use strict;
use warnings;

my $findstring = "ExampleFile";
my $replacestring = "FinalFile";

rename ("myDir/$findstring.*", "myDir/$replacestring.*"); 

出租

rename我相信大多数系统都会附带一个工具(例如,CentOS7拥有)

手册页简短,带简介和说明

重命名[选项]表达式 替换 文件...

重命名将通过替换的第一次出现重命名指定的文件表达通过在他们的名字替换

其次是一个例子,它不完全是基本的,但希望是清楚而有用的。

就你而言

rename ExampleFile NewName ExampleFile.*

应该是您所需要的。


另一种方法是在Perl中执行此操作

perl -MFile::Basename -MFile::Copy=move -wE'
    for (@ARGV) {
        ($name, $path, $ext) = fileparse($_, qr/\.[^.]*/);
        say "Rename: $_  to  $path/NewName$ext";
        #move $_, "$path/NewName$ext" 
    }
' ExampleFile*

取消对行的注释后,它将全部重命名ExampleFile.*NewName具有相同扩展名move就目前而言,它仅会打印将要执行的操作,因此可以先对其进行全面测试。

它使用File :: Basename ::fileparse查找在命令行上提交的每个文件的文件名组成部分,然后使用File :: Copy重命名每个文件。还有其他解析文件名和其他模块的方法。

这是一个用于快速复制粘贴测试的命令行程序。请将其转换为脚本,并进行适当的错误检查。然后,您可以使用Getopt :: Long制作一个具有更好调用效果的实用程序

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

重命名目录中的所有文件,同时保留任何文件扩展名

重命名具有相同扩展名和任何名称的所有文件

SSIS重命名带有文件扩展名的文件出现在正确的位置

重命名带有丢失的文件扩展名的音乐文件

重命名具有多个文件扩展名的文件

Windows批处理-重命名带有扩展名的文件

重命名带有零填充数字的文件,同时使用“重命名”命令保持扩展名

如何重命名具有不同扩展名的文件

重命名具有不同扩展名的文件

重命名所有“。” 文件名中扩展名“ _”(扩展名除外)

Gulp - 重命名文件扩展名

重命名许多文件的扩展名

(重击)重命名文件扩展名

将缩小的文件重命名为具有 *.min.js 扩展名是否有任何性能提升?

重命名扩展名的任何文件时,在星号后省略句点会做什么?

如何在vbscript中重命名具有相同扩展名的不同命名文件

PowerShell重命名文件名并保留扩展名

重命名不带文件扩展名的文件

重命名文件而不更改文件扩展名

如何使用特定扩展名重命名文件夹下的所有文件(递归方法)

重命名和移动具有特定文件扩展名的文件

使用批处理文件以相同的扩展名顺序重命名所有文件

如何通过删除扩展名重命名多个文件?

在R中重命名文件扩展名

使用pathlib重命名文件扩展名(python 3)

如何同时重命名多个文件扩展名?

Excel宏重命名文件扩展名

如何重命名一堆文件的扩展名?

重命名文件为哈希和扩展名