将具有相似结构的所有文件重命名为相同的名称

将具有相似结构的所有文件重命名为相同的名称

我的子文件夹中有很多文件。它们看起来都像 in.*.radiate,其中 * 只是一个数字。

有没有办法只用一个命令 in.radiate 就可以重命名它们?

在 Linux 还是 MATLAB 中?

答案1

是否有更简单的方法,我不知道,但这里有一个简单的 perl 脚本可以为您完成这项工作:

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

my $oldname = '*.radiate';   # Pattern of old filename. Edit if desired.
my $newname = 'in.radiate';  # New filename. Edit if desired.

foreach my $folder1 (glob("*"))
{
    if (-d $folder1)
    {
        foreach my $folder2 (glob("$folder1/*"))
        {
            if (-d "$folder2")
            {
                print "Processing $folder2\n";
                system("mv $folder2/$oldname $folder2/$newname");
            }
        }
    }
}

将其粘贴到名为的文件中,例如,rename.pl在所有子目录所在的目录中,然后使用 运行它perl rename.pl

.radiate它有一个错误/功能,如果正在处理的文件夹不包含文件,它会通知您。

可能有很多更短的方法可以做到这一点,但这应该足够易读,以便“任何人”都可以在需要时进行编辑。

编辑: 更新为遍历子目录的子目录,因为我误读了原始问题。在我的计算机上进行了测试,它在 Linux Mint 17 和 perl 5.18.2 上按预期运行

相关内容