file - 列出给定正则表达式/一组扩展名的目录中的所有文件(Matlab)

标签 file matlab

我有一个正则表达式来定义感兴趣的文件名。列出目录中符合此条件的所有文件的最佳方法是什么?

我的尝试是:

f = dir(DIR);
f = {f([f.isdir] == 0).name};
result = f(~cellfun(@isempty, regexpi(f, '.*(avi|mp4)')));

但是,我想知道是否有更快和/或更清洁的解决方案?

如果我只有一个可能的文件扩展名列表而不是正则表达式,是否可以简化它?

最佳答案

从根本上说,您的方法正是我所追求的。但是,您的代码行可以简化为(目录在正则表达式中丢失,在最终串联中为空单元格):

f = dir('C:\directory');
f = regexpi({f.name},'.*txt|.*pdf','match');
f = [f{:}];

此外,请注意函数 dir() 接受通配符 (*) 但不接受多个扩展名:

dir('C:\directory\*.avi')

这意味着您只能立即检索与扩展名匹配的那些文件,但是您必须循环以获取扩展名的数量:

d   = 'C:\users\oleg\desktop';
ext = {'*.txt','*.pdf'};
f   = [];
for e = 1:numel(ext)
    f = [f; dir(fullfile(d,ext{e}))];
end

备选方案(不推荐)

ext = {'*.txt','*.pdf'};
str = ['!dir ' sprintf('%s ',ext{:}) '/B'];
textscan(evalc(str),'%s','Delimiter','')

其中 str!dir *.txt *.pdf/B 并且 evalc() 捕获字符串和 textscan() 解析它。

关于file - 列出给定正则表达式/一组扩展名的目录中的所有文件(Matlab),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16751842/

相关文章:

Python:从字典格式的文本/文件创建字典

image - 在图像顶部提取热图

visual-studio-2010 - Visual Studio 如何设置事件测试设置

bash - 在 Bash 中打印文件的最后修改日期

matlab - findobj 在计时器回调中失败

matlab - 三元运算在 Octave 中有效吗?

matlab - 生成子图,然后在 MATLAB 中将它们组合成一个图形

image-processing - 训练此数据的训练算法

python - 为什么 .png 文件不能使用 Python 脚本下载,而它适用于其他图像类型?

c++按元素编辑txt文件