我有很多以这样命名的.fig文件:tts.speak("I want to speak", 2, null, generateUtterance());
,20160922_01_id_32509055.fig
等等。
所以我认为我创建了一个循环遍历文件夹中所有.fig文件的脚本,并根据文件名中的最后一个数字将它们分组(复制)到另一个文件夹中。该文件夹是根据ID号创建的。这可能吗?
我一直在寻找其他涉及循环文件夹的解决方案,但我很新鲜。当我学习在Matlab中做其他事情时,这将使我更容易检查.fig文件。
答案 0 :(得分:2)
MATLAB可以实现一切!我们可以使用dir
获取所有.fig文件,然后使用regexp
获取每个文件名的数字部分,然后使用copyfile
将文件复制到其新主页。如果您想要移动它,可以改用movefile
。
% Define where the files are now and where you want them.
srcdir = '/my/input/directory';
outdir = '/my/output/directory';
% Find all .fig files in the source directory
figfiles = dir(fullfile(srcdir, '*.fig'));
figfiles = {figfiles.name};
for k = 1:numel(figfiles)
% Extract the last numeric part from the filename
numpart = regexp(figfiles{k}, '(?<=id_)\d+', 'match', 'once');
% Determine the folder we are going to put it in
destination = fullfile(outdir, numpart);
% Make sure the folder exists
if ~exist(destination, 'dir')
mkdir(destination)
end
% Copy the file there!
copyfile(fullfile(srcdir, figfiles{k}), destination)
end
答案 1 :(得分:1)
以下是如何识别和复制文件的示例。我让你做for循环:)
>> Figs = dir('*.fig'); % I had two .fig files on my desktop
>> Basename = strsplit(Figs(1).name, '.');
>> Id = strsplit(Basename{1}, '_');
>> Id = Id{3};
>> mkdir(fullfile('./',Id));
>> copyfile(Figs(1).name, fullfile('./',Id));
使用命令来查看他们的操作。它应该是直截了当的:))