分享好友 编程语言首页 频道列表

Matlab实现获取文件夹下所有指定后缀的文件

matlab  2023-02-07 18:090

1. 要求

获取指定文件夹下(包含子文件夹),所有指定后缀(如txt)的文件路径(即文件所在目录+文件名),返回一个字符串数组。

2. 代码

获取C:/Users/Administrator/Desktop文件夹下(包含子文件夹)的所有.m文件

clear
dirOutput = dir('C:/Users/Administrator/Desktop/**/*.m');
folder = string({dirOutput.folder}');
file = string({dirOutput.name}');
filepath = strcat(folder, '\', file);

获取C:/Users/Administrator/Desktop文件夹下(不包含子文件夹)的所有.m文件

clear
dirOutput = dir('C:/Users/Administrator/Desktop/*.m');
folder = string({dirOutput.folder}');
file = string({dirOutput.name}');
filepath = strcat(folder, '\', file);

封装成函数。调用时若输入两个参数,则默认搜索子文件夹

function filepath = getFilesPath(baseDir, ext, findSubfile)
if nargin == 2  % 判断输入的参数是否为2
    findSubfile = true;
end
if findSubfile
    dirOutput = dir([baseDir '/**/*.' ext]);
else
    dirOutput = dir([baseDir '/*.' ext]);
end
folder = string({dirOutput.folder}');
file = string({dirOutput.name}');
filepath = strcat(folder, '\', file);
end

调用方法

getFilesPath('C:/Users/Administrator/Desktop', 'm')

结果展示

Matlab实现获取文件夹下所有指定后缀的文件

3. 参考

未仔细学习dir()函数之前

本文介绍一种通过MATLAB获取当前文件夹下所有文件名称的方法,包含子文件夹内的文件名称,请参考。

主要用到的函数包括uigetdir()、dir()。

AidDir = uigetdir();     % 通过交互的方式选择一个文件夹
if AidDir == 0             % 用户取消选择
    fprintf('Please Select a New Folder!\n');
else
    ParentFolder = dir(AidDir);    % 获取当前文件夹下的信息
    AllFile = struct;            % 建立空结构体
    AllFile = GetAllFile(ParentFolder,AllFile);
    if isempty(fieldnames(AllFile))
        fprintf('There are no files in this folder!\n');
    else    % 当前文件夹下有文件,反馈文件数量
        fprintf('Number of Files: %i \n',size(AllFile,2));
    end
end
function [AllFileStruct] = GetAllFile(ParentFolder,AllFile) 
AllFileStruct = AllFile;
if isempty(fieldnames(AllFile))
    FileNum = 0; % 用于统计文件数量
else
    FileNum = size(AllFileStruct,2);
end
try
    %从第3个开始是文件,如果报错,则表明当前文件夹没有文件,运行catch
    for i = 3:length(ParentFolder) 
        if ParentFolder(i).isdir == 1 % 当前是文件夹
            SubFolder = [ParentFolder(i).folder,'\',ParentFolder(i).name];
            Temp = dir(SubFolder);
            AllFileStruct = GetAllFile(Temp,AllFileStruct); % 函数递归
            FileNum = size(AllFileStruct,2);
        else
            FileNum = FileNum + 1;
            %通过结构体可以存储多种数据,本文仅以文件名称为例
            AllFileStruct(FileNum).name = ParentFolder(i).name; 
        end
    end
catch
end
end

最后通过查看AllFile变量即可获取当前文件夹下所有文件名称。

仔细学习dir()函数之后

先放代码:

AidDir = uigetdir();     % 通过交互的方式选择一个文件夹
if AidDir == 0             % 用户取消选择
    fprintf('Please Select a New Folder!\n');
else
    cd(AidDir)
    RawFile = dir('**/*.*'); %主要是这个结构,可以提取所有文件
    AllFile = RawFile([RawFile.isdir]==0);
    if isempty(fieldnames(AllFile))
        fprintf('There are no files in this folder!\n');
    else    % 当前文件夹下有文件,反馈文件数量
        fprintf('Number of Files: %i \n',size(AllFile,1));
    end
end

没了。。。。不需要画蛇添足。。。。

dir()函数以n×1结构体数组形式返回,其中n是dir()函数返回的文件和文件夹的数量,下表中显示了结构体中的字段。

字段名称 说明
name 文件或文件夹名称 char
folder 文件或文件夹的位置 char
date 修改日期时间戳 char
bytes 文件大小(以字节为单位) double
isdir 如果名称为文件夹,则为1;如果名称为文件,则为0 logical
datenum 修改日期是一个日期序列值 double

提取指定扩展名的文件dir('**/*.m')

原文地址:https://blog.csdn.net/qq_42276781/article/details/127739572

查看更多关于【matlab】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
如何在Abaqus的python中调用Matlab程序
目录1. 确定版本信息2. 备份python3. 设置环境变量4. 安装程序5. 调试运行参考资料Abaqus2018操作系统Win10 64位Python版本2.7(路径C:\SIMULIA\CAE\2018\win_b64\tools\SMApy\python2.7)2. 备份python将上述的“python2.7”文件夹复制出来,避免因操作错误

0评论2023-03-16608

ROS与Matlab系列:一个简单的运动控制 基于matlab的运动控制系统
转自:http://blog.exbot.net/archives/2594Matlab拥有强大的数据处理、可视化绘图能力以及众多成熟的算法函数,非常适合算法开发;在控制系统设计中,Simulink也是普遍使用的设计和仿真工具。而ROS系统,则是一种新的标准化机器人系统软件框架。通过ROS,你

0评论2023-02-10920

matlab 遍历结构体struc的成员
MATLAB中专门用于对结构数组的操作的函数并不多,通过 help datatypes获取数据类型列表,可以看到其中的结构数据类型的有关的函数,主要如表4.3.1所示。表4.3.1 结构数组的操作函数函数名             功能描述 deal                 把输入处

0评论2023-02-09712

matlab编程如何换行 matlab怎么换行
空格+三个点+逗号

0评论2023-02-09691

C/C++中调用matlab引擎计算 matlab转c
原帖地址:http://blog.sina.com.cn/s/blog_6adcb3530101cvot.html一,在linux环境使用matlab引擎必须先进行一些必要的配置1,matlab引擎依赖/bin/csh启动,所以不管你使用何种shell,都必须安装csh。**2,matlab引擎依赖的动态库文件目录必须在系统当前的

0评论2023-02-09451

matlab几何纠正,间接法,双线性内插
超简洁,超级快,两个文件datapre.m文件代码:global X;global Y;global A;global l;global i;global I;global m;global n;global k;global dx;  A=[];l=[];i=0;m=[];n=[];dx=[]; fig=figure;subplot(1,2,1);I=imread('编程实习2-待纠正图像.bmp');imshow(I

0评论2023-02-09482

Matlab 根号的输入
二次根号:sqrt(a)或a^0.5三次根号:x^(1/3)或者x.^(1/3)根据x的数据结构类型矩阵、数组需要.^

0评论2023-02-09969

命令视频Matlab下查看摄像头设备信息
时间紧张,先记一笔,后续优化与完善。    应用如下2个命令:         info = imaqhwinfo('winvideo')    每日一道理 俄国作家契诃夫说:“有大狗,有小狗,小狗不该因为大狗的存在而心慌意乱。所有的狗都应该叫,就让他各自用上帝给他的声音

0评论2023-02-09957

How to use the HMM toolbox (Matlab)
一、离散输出的隐马尔科夫模型(DHMM,HMM with discrete outputs)最大似然参数估计EM(Baum Welch算法)The script dhmm_em_demo.m gives an example of how to learn an HMM with discrete outputs. Let there be Q=2 states and O=3 output symbols. We c

0评论2023-02-09459

permutation 随机置换检验的Matlab程序
假定a为某指标在10个样本中的值,5个一组,看以两组均值的差为例(统计量),随机置换检验程序 example: a: 230 -1350 -1580 -400 -760 970 110 -50 -190 -200v1=sum(a(1:5))/5;v2=sum(a(6:10))/5;T=abs(v1-v2);x=perms(a);      %矩阵a的全排列(随机全

0评论2023-02-09662

MATLAB学习1 之画图函数
ezplot适用条件“ezplot”命令可以用于显函数、隐函数和参数方程作图。不同函数的使用格式显函数y=f(x),ezplot函数的调用格式为ezplot(f, [xmin xmax]);              例:ezplot(\'sin(10*pi*x)/x\',[1 2]);%画出函数曲线隐函数f(x,y)=0,ezplot函数的

0评论2023-02-09591

Matlab 之 数据元素访问
Matlab的含义是矩阵实验室,其特征之一就是数据的向量化操作,借此提升软件运行效率。那么,必然会涉及数据元素的访问。Matlab主要支持下面一些形式的访问:(1)array-inde: A(i)(2)cell-index: C{i}(3)struct field: S.fieldname不同的访问方式,效

0评论2023-02-09994

更多推荐