为了账号安全,请及时绑定邮箱和手机立即绑定

如何在MATLAB中获取特定目录下的所有文件?

如何在MATLAB中获取特定目录下的所有文件?

如何在MATLAB中获取特定目录下的所有文件?我需要获取所有这些文件D:\dic并循环它们以进一步单独处理。MATLAB是否支持这种操作?它可以在其他脚本中完成,如PHP,Python ......
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

鉴于这篇文章相当陈旧,我在这段时间内为自己的用途修改了这个实用程序,我想我应该发布一个新版本。我的最新代码可以在The MathWorks File Exchange上找到:dirPlus.m。您也可以从GitHub获取源代码。

我做了很多改进。它现在为您提供了前置完整路径或仅返回文件名(从DoresoomOz 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');


查看完整回答
反对 回复 2019-07-26
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

您正在寻找dir来返回目录内容。

要循环结果,您只需执行以下操作:

dirlist = dir('.');for i = 1:length(dirlist)
    dirlist(i)end

这应该为您提供以下格式的输出,例如:

name: 'my_file'date: '01-Jan-2010 12:00:00'bytes: 56isdir: 0datenum: []


查看完整回答
反对 回复 2019-07-26
  • 3 回答
  • 0 关注
  • 2750 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信