可以使用matlab根据文本文件中列出的文件名提取文件吗?

时间:2011-07-11 02:41:20

标签: matlab

我在文件夹中有一千个文件,但是,我只需要根据文本文件中列出的文件名将文件夹中的一百个文件提取到新文件夹中。文本文件中的文件名列为列..可以使用matlab运行吗?我需要编写什么代码?感谢。

示例:

filenames.txt位于C:\ matlab

文件夹包含千个文件,在C:\ matlab

中也被命名为BigFiles

要从BigFiles文件夹中提取的文件列在下面的列中:

filenames.txt

a1sndh

sd3rfe

rgd4de

sd5erw

请告知...谢谢......

2 个答案:

答案 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)

编辑:

据我所知,您正在寻找解决方案:

filenames.txt

a.txt
b.txt
c.txt
.
.
.

moveMyFiles.m

%# 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函数......