我在文件夹中有一千个文件,但是,我只需要根据文本文件中列出的文件名将文件夹中的一百个文件提取到新文件夹中。文本文件中的文件名列为列..可以使用matlab运行吗?我需要编写什么代码?感谢。
示例:
filenames.txt位于C:\ matlab
中文件夹包含千个文件,在C:\ matlab
中也被命名为BigFiles要从BigFiles文件夹中提取的文件列在下面的列中:
filenames.txt
a1sndh
sd3rfe
rgd4de
sd5erw
请告知...谢谢......
答案 0 :(得分:1)
使用以下命令枚举特定类型(如果需要)的文件夹中的所有文件:
%main directory to process
directory = 'to_process';
%enumerate all files (.m in this case)
files = dir(fullfile(directory,'*.m'));
numfiles = length(files);
fprintf('Found %i files\n',numfiles)
然后您可以使用Matlab中的many file I/O functions之一加载单列。
然后循环遍历所有输入名称,并根据所有读入的文件(文件{i} .name)检查它的名称,如果是,则移动它。
答案 1 :(得分:1)
据我所知,您正在寻找解决方案:
a.txt
b.txt
c.txt
.
.
.
%# read filenames listed in a text file
fid = fopen('C:\matlab\filenames.txt');
fList = textscan(fid, '%s');
fList = fList{1};
fclose(fid);
%# source/destination folder names
sourceDir = 'C:\matlab\BigFiles';
destDir = 'C:\matlab\out';
if ~exist(destDir,'dir')
mkdir(destDir);
end
%# move files one by one
for i=1:numel(fList)
movefile(fullfile(sourceDir,fList{i}), fullfile(destDir,fList{i}));
end
如果您只想复制文件而不是移动它们,可以用COPYFILE替换MOVEFILE函数......