如何在MATLAB中获取特定目录下的所有文件?我需要获取所有这些文件D:\dic并循环它们以进一步单独处理。MATLAB是否支持这种操作?它可以在其他脚本中完成,如PHP,Python ......
3 回答
翻阅古今
TA贡献1780条经验 获得超5个赞
鉴于这篇文章相当陈旧,我在这段时间内为自己的用途修改了这个实用程序,我想我应该发布一个新版本。我的最新代码可以在The MathWorks File Exchange上找到:dirPlus.m
。您也可以从GitHub获取源代码。
我做了很多改进。它现在为您提供了前置完整路径或仅返回文件名(从Doresoom和Oz Radiano合并)的选项,并将正则表达式模式应用于文件名(由Peter D合并)。此外,我添加了将验证功能应用于每个文件的功能,允许您根据标准以外的条件(即文件大小,内容,创建日期等)选择它们。
注意:在较新版本的MATLAB(R2016b及更高版本)中,该dir
功能具有递归搜索功能!因此,您可以执行此操作以获取*.m
当前文件夹的所有子文件夹中的所有文件的列表:
dirData = dir('**/*.m');
旧代码:(后代)
这是一个以递归方式搜索给定目录的所有子目录的函数,收集它找到的所有文件名的列表:
function fileList = getAllFiles(dirName) dirData = dir(dirName); %# Get the data for the current directory dirIndex = [dirData.isdir]; %# Find the index for directories fileList = {dirData(~dirIndex).name}'; %'# Get a list of the files if ~isempty(fileList) fileList = cellfun(@(x) fullfile(dirName,x),... %# Prepend path to files fileList,'UniformOutput',false); end subDirs = {dirData(dirIndex).name}; %# Get a list of the subdirectories validIndex = ~ismember(subDirs,{'.','..'}); %# Find index of subdirectories %# that are not '.' or '..' for iDir = find(validIndex) %# Loop over valid subdirectories nextDir = fullfile(dirName,subDirs{iDir}); %# Get the subdirectory path fileList = [fileList; getAllFiles(nextDir)]; %# Recursively call getAllFiles endend
在MATLAB路径的某处保存上述函数后,可以通过以下方式调用它:
fileList = getAllFiles('D:\dic');
添加回答
举报
0/150
提交
取消