æ¨å¥½ï¼ææ¥ä¸ºæ¨è§£çï¼
function [pathstruct,pathstr]=dirext(thepath,syntax)
% 使ç¨éå½æ¹æ³ååºææ¥æ¾æå®ç®å½ä¸çæ件
% å¯ä»¥ä½¿ç¨doså½ä»¤å¾å°ç¸åçææ
% [~,pathstruct]=system(['dir /B/S ', thepath])
%
% è¾å
¥åæ°
% thepathï¼éè¦æ£ç´¢çç®å½
% syntaxï¼å¹é
è¯æ³ï¼ä»
æ¯ææ£åå¹é
% æ£åè¯æ³
% . å¹é
é¤æ¢è¡ç¬¦ä»¥å¤çä»»æå符
% \w å¹é
åæ¯ææ°åæä¸å线ææ±å
% \s å¹é
ä»»æç空ç½ç¬¦
% \d å¹é
æ°å
% \b å¹é
åè¯çå¼å§æç»æ
% ^ å¹é
å符串çå¼å§
% $ å¹é
å符串çç»æ
% * éå¤é¶æ¬¡ææ´å¤æ¬¡
% + éå¤ä¸æ¬¡ææ´å¤æ¬¡
% ? éå¤é¶æ¬¡æä¸æ¬¡
% {n} éå¤n次
% {n,} éå¤n次ææ´å¤æ¬¡
% {n,m} éå¤nå°m次
%
% è¾åºåæ°
% pathstruct: æ£ç´¢å°çç®å½ï¼ç»æä½æ°ç»ï¼å段åäºdirå½æ°
% pathstr: æææ件åç®å½çå表
%
% å
¸åä¾å
% thepath='C:\Users\dynamic\Documents';;
% syntax='wav' % æ¥æ¾ææwavæ件
% [pathstruct,pathstr]=dirext(thepath,syntax)
%
persistent list count
if isempty(list)
count=0;
list=struct('name',[],'date',[],'bytes',[],'isdir',[],'datenum',[],'path',[]);%{thepath};
else
tmp=length(list);
if count>0.8*tmp;
list(2*tmp)=list(1);
end
end
filesystem=dir(thepath);
for i=1:length(filesystem)
file=filesystem(i);
name=file.name;
type=file.isdir;
if ~strcmpi(name,'.') && ~strcmpi(name,'..')
count=count+1;
nextpath=fullfile(thepath,name);
file.path=nextpath;
list(count)=file;
if type
dirext(nextpath);
end
end
end
pathstruct=list(1:count);
if nargin==2
listpath={pathstruct.path};
flag=regexp(listpath,syntax);
pathstruct=pathstruct(~cellfun(@isempty,flag));
end
pathstr={pathstruct.path}';
å¦ææçåç没è½å¸®å©æ¨ï¼è¯·ç»§ç»è¿½é®ã
温馨提示:答案为网友推荐,仅供参考