爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 13304|回复: 5

[程序设计] matlab 搜索文件夹中指定通配符的文件

[复制链接]

新浪微博达人勋

发表于 2013-9-4 15:02:42 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 张增海_man 于 2013-9-4 15:04 编辑

工作需要,matlab自带的ls搜索文件夹中的文件难以满足需要,自己编织了列举某文件夹中指定通配符的文件的小程序,

可以搜索出 不含通配符,很有1个通配符,和含有2个通配符的文件列表,当然根据需要还可以追加,各位高手可以自行添加代码,本帖仅为抛砖引玉。

输入参数为路径:filepath,第一、第二通配符,wildcards1和wildcards2
输出参数为文件列表: listing

如果文件夹内不含所要求的内容,则范围空字符,可以用 isempty 判定
  1. function listing = zh_ls(filepath,wildcards1,wildcards2)
  2.     % 列举出指定文件夹下指定通配符的文件名
  3.     % 这里可以列举两个
  4.    

  5.     filelist = ls(filepath);
  6.     [m,~] = size(filelist);
  7.     if(m<3)
  8.         listing = [];
  9.         return,
  10.     else
  11.         filelist = filelist(3:end,:); % 去掉  .  和 ..  的两个
  12.     end
  13.       
  14.    
  15.     if(nargin==1)
  16.         listing = filelist;
  17.         return,
  18.     end
  19.    
  20.    

  21.         filelistcell = cellstr(filelist);
  22.         index1 = strfind(filelistcell,wildcards1);  % index1 is cell
  23.         j=0;
  24.         for i = 1:length(index1)
  25.             if(~isempty(index1{i}))
  26.                 j=j+1;
  27.                 index1num(j) = i;
  28.             end
  29.         end

  30.         if(j==0)
  31.             listing = [];
  32.             return,
  33.         else
  34.             filelist2 = filelist(index1num,:);
  35.         end
  36.         
  37.         if(nargin==2)
  38.             listing = filelist2;
  39.             return,
  40.         end
  41.    

  42.         filelistcell2 = cellstr(filelist2);
  43.         index2 = strfind(filelistcell2,wildcards2);  % index2 is cell
  44.         j=0;
  45.         for i = 1:length(index2)
  46.             if(~isempty(index2{i}))
  47.                 j=j+1;
  48.                 index2num(j) = i;
  49.             end
  50.         end
  51.         
  52.         if(j==0)
  53.             listing = [];
  54.             return,
  55.         else
  56.             filelist3 = filelist2(index2num,:);
  57.         end
  58.         
  59.         if(nargin==3)
  60.             listing = filelist3;
  61.             return,
  62.         end
  63.   end
复制代码

评分

参与人数 2金钱 +26 贡献 +7 收起 理由
Aires + 14 + 4 很给力!
mofangbao + 12 + 3

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-4 16:13:07 | 显示全部楼层
matlab里好久没人发自己的程序帖了。谢谢楼主……
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-4 20:00:10 | 显示全部楼层
感谢分享      
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-9-5 17:59:12 | 显示全部楼层

我也是在做东西的时候用到这样的功能,我想其他人或许有用,就贴出来吧,大家可以直接复制下载,免得积分少的人无法下载(自动回复:请不要使用迅雷等下载工具,点我查看下载帮助)。有什么不对地方敬请指正。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-5 19:40:46 | 显示全部楼层
张增海_man 发表于 2013-9-5 17:59
我也是在做东西的时候用到这样的功能,我想其他人或许有用,就贴出来吧,大家可以直接复制下载,免得积分 ...

谢谢楼主了。希望以后能看到更好的技术帖,精华帖~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-11-23 20:59:12 | 显示全部楼层
大佬呀,十分感谢,救命帖!!!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表