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

标签 linux bash matlab

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

有没有办法用一条命令将它们全部重命名为 just 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 $folder\n";
        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

关于linux - 将具有相似文件名的文件重命名为相同文件名但不同文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29834864/

相关文章:

linux - 通过运行脚本检测文件读/写

linux - 从linux中的两个文件内容重命名文件名

c - 如何为同一个父进程创建 4 个子进程并等待 4 个子进程完成?

linux - 有没有合理的方法将新路径附加到 bashrc 中的 PATH?

matlab - 如何加载.arff格式文件到matlab

arrays - 查找最常连续重复的数字

windows - 休眠线程时到底发生了什么

bash - 根据匹配多个值之一的列提取行

bash - 如何在 bash 中创建嵌套序列?

matlab - 在matlab中是否可以隐藏从handle类继承的方法?