我在子文件夹中有很多文件。它们看起来都像。*。辐射,其中*只是一个数字。我需要将不同子文件夹中的这些类似文件名重命名为常量名称,但将它们保存在各自的文件夹中。
有没有办法用一个命令将所有这些命令重命名为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");
}
}
答案 0 :(得分:1)
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
...
更换全部。*。与。使用上面的循环:
$ 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
答案 1 :(得分:0)
这在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上使用此功能的所有文件的完整列表。它将生成一个包含所有文件的结构,根据特定的过滤器,您可以“辐射”。