Matlab脚本:统计提取目标类型的文件
本脚本用于统计目标文件路径下目标文件类型的文件名和路径
%% 寻找目标路径下目标文件类型的数目
% date:2021.01.09
% input:
% 文件夹路径
% 文件类型(m、txt、data)
% example:
% [a] = find_files_in_dir('路径','m');
%% File Content
function [total_list] = find_files_in_dir( start_dir, filetype )
% 将文件夹及其子文件夹添加到搜索路径
subdirectories = genpath( start_dir );
% ispc - 确定版本是否适用于 Windows (PC) 平台
if ispc
% 匹配正则表达式
subdirectories = regexp( subdirectories, '[^;]*', 'match' );
else
subdirectories = regexp( subdirectories, '[^:]*', 'match' );
end
% strrep - 查找并替换子字符串
% strrep(str,old,new)
filetype = strrep( filetype, '.', '' );
total_list = {};
for i = 1:length( subdirectories )
% dir()列出当前文件夹中的文件和文件夹。
files = dir( subdirectories{ i } );
% 判断生成文件夹isdir属性
% isdir=1,代表文件夹,否则,代表文件
% 获得文件夹目录中的文件
files = files( ~[ files.isdir ] );
files = { files.name }';
% 比较字符串(不区分大小写),相同,返回1,否则,返回0
if ~strcmpi( filetype, '*' )
for j = 1:length( files )
% 对比文件的扩展名与目标文件类型
if strcmpi( file_get_extension( files{ j } ), filetype )
% 获得匹配文件的路径
total_list{ end + 1, 1 } = subdirectories{ i };
% 获得文件名称
total_list{ end , 2 } = files{ j };
end
end
else
if ~isempty( files )
directories = cell( length( files ), 1 );
[ directories{ 1:end } ] = deal( subdirectories{ i } );
total_list = [ total_list;[ directories, files ] ];
end
end
end
% 获得文件的扩展名
function extension = file_get_extension( filename )
extension = '';
% strfind - 在其他字符串中查找字符串,返回起始索引
idx = strfind( filename, '.' );
if ~isempty( idx )
% 获得文件的扩展名
extension = filename( idx + 1:end );
end