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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

我要把所有的文件D:\dic然后循环处理它们,以单独进行进一步的处理。

MATLAB支持这种操作吗?

它可以在其他脚本中完成,比如PHP,Python...

提问于
用户回答回答于

注意:在更新版本的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
  end

end

在你的MATLAB路径的某处保存上述函数后,你可以用下面的方法调用它:

fileList = getAllFiles('D:\dic');
用户回答回答于

你正在寻找目录以返回目录内容。

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

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

这应该给你以下格式的输出,例如:

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

扫码关注云+社区