我希望将文件从一个文件夹复制到另一个文件夹,但前提是文件名以字母“w”开头。下面是我到目前为止想出的脚本,但它不起作用。脚本中有两个循环,因为有三个文件夹(即subjects)中的文件,并且每个文件夹都有四个子文件夹,我要在它们中扫描‘w*’文件。文件应该从"folderx“复制到"folderxnew”。
for n_subj = 1:3
cwd_all = { '/data/subject1/'; '/data/subject2'; 'data/subject3'; };
cwd = cwd_all{n_subj};
dirs{1}='folder1';
dirs{2}='folder2';
dirs{3}='folder3';
dirs{4}='folder4';
dirt{1}='folder1new';
dirt{2}='folder2new';
dirt{3}='folder3new';
dirt{4}='folder4new';
for nses=1:4
dir = dirs{nses};
files = dir('w*');
copyfile(files, dirt{nses},'f');
end
end
发布于 2013-07-23 15:14:40
你能试试这个循环吗:
for nses=1:4
files = dir([dirs{nses} '\w*']);
for i =1:length(files)
copyfile(files(i).name, dirt{nses},'f');
end
end
发布于 2014-07-26 01:40:01
首先,尽量不要在循环中定义常量(尽管这与结果无关)。
其次,您的原始代码在nses循环的第i次迭代中创建了一个名为"dir“的变量。这将覆盖下一步要调用的"dir“函数。
最后,所有代码都不包含完整路径命名,这意味着当您调用"copyfile(files ...)“时,MATLAB正在查找您当前的工作目录。您需要传递cwd和dirs(nses)的正确连接。
发布于 2017-07-16 03:18:00
我遇到过许多这样的情况,需要特定的文件复制和重命名任务。因此,我在matlab中编写了一个函数"easycopy“(以及姊妹函数"easyrename"),以提供一种使用列表和通配符复制和重命名文件的便捷方法。
您可以在Matlab文件交换上查看它们:
[https://www.mathworks.com/matlabcentral/fileexchange/63417-easycopy][1]
[https://www.mathworks.com/matlabcentral/fileexchange/63586-easyrename][1]
下面是它在这种情况下的样子:
那个?带有"subject“的通配符匹配目录subject 1、2、3和"folder?”匹配folder1、2、3、4。然后目标表达式使用"...subject?\folder?new...“要创建文件夹...subject(1,2,3)\folder(1,2,3,4)new...第一个来源"?“匹配第一个"?“在目标表达式中,第二个"?“匹配第二个目标"?“以此类推。"w*.txt“匹配所有"w”源文件,并将它们复制到"w*.txt“目标。
easycopy('c:\data\subject?\folder?\w*.txt','c:\data\subject?\folder?new\w*.txt')
COPYING FILES .....
Copying c:\data\subject1\folder1\wicked.txt
To c:\data\subject1\folder1new\wicked.txt
Copying c:\data\subject1\folder2\wicked.txt
To c:\data\subject1\folder2new\wicked.txt
Copying c:\data\subject1\folder3\wicked.txt
To c:\data\subject1\folder3new\wicked.txt
Copying c:\data\subject1\folder4\wicked.txt
To c:\data\subject1\folder4new\wicked.txt
Copying c:\data\subject2\folder1\wicked.txt
To c:\data\subject2\folder1new\wicked.txt
Copying c:\data\subject2\folder2\wicked.txt
To c:\data\subject2\folder2new\wicked.txt
Copying c:\data\subject2\folder3\wicked.txt
To c:\data\subject2\folder3new\wicked.txt
Copying c:\data\subject2\folder4\wicked.txt
To c:\data\subject2\folder4new\wicked.txt
Copying c:\data\subject3\folder1\wicked.txt
To c:\data\subject3\folder1new\wicked.txt
Copying c:\data\subject3\folder2\wicked.txt
To c:\data\subject3\folder2new\wicked.txt
Copying c:\data\subject3\folder3\wicked.txt
To c:\data\subject3\folder3new\wicked.txt
Copying c:\data\subject3\folder4\wicked.txt
To c:\data\subject3\folder4new\wicked.txt
DONE !
https://stackoverflow.com/questions/17803492
复制相似问题