将具有相似文件名的文件重命名为相同文件名但文件夹不同



我在子文件夹中有很多文件。它们看起来都像 in.*.radiate,其中 * 只是一个数字。我需要将不同子文件夹中的这些相似文件名重命名为常量名称,但将它们保留在各自的文件夹中。

有没有办法用一个命令重命名所有这些,只在 in.radiate ?

无论是在 Linux 还是 MATLAB 中?

Perl 脚本

#!/usr/bin/perl
use warnings;
use strict;
my $newname = 'in.radiate'; # If you want a different filename, edit this line
foreach my $folder (glob("*"))
{
    # Ensure it's a folder
    if (-d $folder)
    {
        print "Processing $foldern";
        system("mv $folder/*.radiate $folder/$newname");
    }
}

一个 bash 解决方案:

for file in $(find dir -iname "*.radiate"); do
mv $file ${file/.*././}
done

要查找所有 .radiate 文件,请执行以下操作:

$ find dir -iname "*.radiate"
dir-root/1/1/in.1.radiate
dir-root/1/10/in.10.radiate
dir-root/1/100/in.100.radiate
dir-root/1/101/in.101.radiate
dir-root/1/102/in.102.radiate
...

将所有 .*. 替换为 . 使用上面的 for 循环:

$ find dir -iname "*.radiate"
dir-root/1/1/in.radiate
dir-root/1/10/in.radiate
dir-root/1/100/in.radiate
dir-root/1/101/in.radiate
dir-root/1/102/in.radiate

这在 MATLAB 中是可能的。 movefile 函数允许您将文件移动到它所在的同一文件夹中,并为其指定一个新名称。您需要生成包括路径在内的所有文件的列表,然后遍历每个文件。如下所示..

    %found_files represents the results of the search function i will 
    %mention below.
    new_name= 'in.radiate';
    for pp = 1 : length(found_files)
        %create string of path with new file name
        renamed_file = strcat(path, new_name); 
        %move file command. 
        movefile(found_files(pp).name, renamed_file);
    end

为了获得所有文件的完整列表,我会在 Matlab Exchange 上使用类似这个函数的东西。 它将根据特定的过滤器生成一个包含所有文件的结构,该过滤器对您来说可能是"辐射"。

相关内容

  • 没有找到相关文章

最新更新