图像缩略图

dirPlus

version 2.0.0.0 (10.9 KB) by 肯尼斯·伊顿
dirPlus将递归地从文件夹树中收集文件/文件夹列表。

6下载

更新2017年3月21日

视图版本历史

查看许可协议

此代码是U特用功能的更新版本,我最初发布为堆栈溢出的以下问题的答案:“如何在Matlab的特定目录下获取所有文件?”(http://stackoverflow.com/q/2652630/52738)。

代码库和以前的版本可以在GitHub (https://github.com/kpeaton/dirPlus)。

用法:
List = Dirplus(RootPath)将通过rootPath下方的文件夹树进行递归搜索,并收集其查找的所有文件的单元格数组列表。该列表将包含从根路径启动的每个文件的绝对路径。

LIST = dirPlus(ROOTPATH, 'PropertyName', PropertyValue,…)将根据指定的属性/值对修改文件和目录的选择方式,以及LIST的格式。用户可以设置的有效属性有:

一般:

'Struct' -一个逻辑值,决定输出LIST是否应该是DIR函数返回的形式的结构数组。如果为TRUE, LIST将是一个n乘1的结构数组,而不是单元格数组。

“深度” - DirPlus将搜索的最大文件夹树深度的非负整数值。A value of 0 will only search in ROOTPATH, a value of 1 will search in ROOTPATH and its subfolders, etc.. Default (and maximum allowable) value is the current recursion limit set on the root object (i.e. get(0, 'RecursionLimit')).

'ReturnDirs' -一个逻辑值,决定输出是文件列表还是子目录。如果为TRUE, LIST将是子目录名称/路径的单元格数组。默认是假的。

“prependpath” - 确定文件/子目表中的完整路径是否为列列表中的每个文件。默认为true将添加完整路径,否则只返回文件/子目录名称。如果'struct'参数为true,则忽略此设置。

FILE-SPECIFIC:

'FileFilter' -一个定义正则表达式模式的字符串,该模式将应用于文件名。只有匹配模式的文件才会在LIST中返回。默认值是"(即包含所有文件)。

'ValidateFcn' -一个函数句柄,它接受DIR函数返回的表单结构作为输入,并返回一个逻辑值。这个函数将应用于所有找到的文件,只有返回值为TRUE的文件才会被包含在LIST中。默认值是[](即包含所有文件)。

DIRECTORY-SPECIFIC:

'dirfilter' - 定义常规表达式模式的字符串将应用于子目录名称。只有匹配模式的子目录将被视为有效(即,列出本身或包含在列表中的文件)。默认为''(即所有子目录都有效)。'RecurseInvalid'参数的设置决定了无效的子目录是否仍然递归向下。

'ValidateDirFcn' -一个函数句柄,它接受DIR函数返回的表单结构作为输入,并返回一个逻辑值。这个函数将应用于所有找到的子目录,只有返回值为TRUE的子目录才被认为有效(即包含在LIST中或其文件包含在LIST中)。默认值是[](即所有子目录都是有效的)。'RecurseInvalid'参数的设置决定了无效的子目录是否仍然递归向下。

'重复invalid' - 仍然仍会向下退仍然递交逻辑值确定无效子目录(如“dirfilter”和'validatedirfcn'参数标识)。默认为false(即,递归搜索在无效子目录中停止)。

在演示脚本getAllFiles_demo中可以找到如何使用这些选项的示例。m或已发布格式的getAllFiles_demo.html。

引用作为

肯尼斯伊顿(2021年)。dirPlus(//www.tatmou.com/matlabcentral/fileexchange/60716-dirplus), MATLAB中央文件交换。检索

评论和评级(14

Apoorva斯利瓦斯塔瓦

输出是否保证被排序?

Ulrike Burmester

路易斯·戈麦斯

andreas franzke.

梁武

如果你能提供一个例子来展示如何选择具有特定名称的文件,比如“SAT*”。m'(有些m文件名以SAT开头),这样会更有帮助。

伊尔凡爱资哈尔

非常有用的颂歌。
非常感谢!

阿诺德

巨大的贡献!
没关系-我忽略了'深度',0参数只是搜索rootFolder。

阿诺德

如果有一个清晰的选择如何排除所有子目录,那将会很好。我无法想到一个适当的过滤器ATM,可以以编程方式地排除任意命名的子目录。

肯尼斯·伊顿

嗨mrw7474,

我已经写了一下,只关注收集文件列表,但你已经把它扩展了一个想法,让用户也收集子目录列表。目前,没有*完成*方法来做你想要的东西。如果收集所有文件,请用`fileparts`函数提取路径,然后使用函数`唯一的结果,它将为您提供包含至少一个文件的所有子目录的列表。它不包括空的子目录。

感谢您的反馈!我希望在接下来的几天内发布一个新版本,可能具有新的名称,如“Dirplus”或“类似”。

MRW7474

肯,这很棒!!是否有一种方法可以在不使用GenPath的情况下获取子目录列表?我试图修改你的代码来吐出子目录列表,但我不熟悉你实现了解析器的方式。

肯尼斯·伊顿

嗨angelo,

'FileFilter'参数是一个正则表达式模式,因此您可以仅使用一个字符串来寻找多个匹配。例如,你可以像这样找到所有的。jpg, .png和.bmp文件:'\.(jpg|png|bmp)$'。

安吉洛marchisella

我可否只指定一个以上的“FileFilter”?

Saurabh Kataria

Matlab释放兼容性
用R2016B创建
兼容任何释放
平台的兼容性
视窗 苹果系统 Linux

社区宝藏狩猎

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!

html /