图片缩略图

genpath_exclude

2.22版本1.4.0.0 (KB) 杰西·霍普金斯
执行像genpath,但可以忽略指定目录。

9下载

更新2009年10月27日

视图版本历史

查看许可协议

执行像genpath,但可以忽略目录。有用的目录层次结构添加到您的路径,但忽略CM目录如“简历”或“. svn”

目录可能排除使用正则表达式。

windows上的测试,但应工作在任何平台。

使用示例:
genpath_exclude (C: \ myDir, {CVS的})% < - - - - - -简单使用CVS direcotries忽略

genpath_exclude (C: \ myDir, {\ . svn的})% < - - - - - -简单使用忽略. svn(注意,“。”必须为正确处理转义正则表达式)

genpath_exclude (C: \ myDir,{“简历”,“# *’。})% < - - - - -更高级的用法忽略CVS目录和任何目录以“#”开始

引用作为

杰西·霍普金斯(2021)。genpath_exclude(//www.tatmou.com/matlabcentral/fileexchange/22209-genpath_exclude), MATLAB中央文件交换。检索

评论和评级(10)

芭芭拉

大卫

这个函数是失踪的默认排除字符串' + packagename '包目录的条目。

失踪的模式导致进口警告,如果你试图包括包dir。

完整的排除路径应该是:

如果~(正则表达式(目录名,[' ^ \。美元| ^ \ \。美元| ^ \ @。* | ^ \ +。* | ^私人美元|”excludeStr],“开始”))

杰西·霍普金斯

craq——对不起,我认为原始版本早已失去了。然而这是一个从我的记忆中提示:

dirs_str = genpath ();
dirs_cell = regexp (dirstr '; ', '分裂');
matchstr = ' [\ \ /) c | d [\ \ /] c '
dirmatch = regexp (dirs_cell matchstr,“开始”,“一旦”);
matchidx =找到(cellfun (@ (x) isempty (x) dirmatch));
目录dirs_cell {matchidx});

杰西·霍普金斯

craq -我做一点挖掘,看看我能不能找到我的原始版本。在另一个报告,我做过类似于你的一种方式在过去是通过“私”。如果有文件夹,我不想最终路径,但是我可能需要动态添加后,我会私下封装这些目录。

即。
/私人/ b, a / c, d / c。

使用此方法时,该目录下“私人”不会被添加在默认情况下,因为genpath不会看在私人的,但是如果你能显式地添加“/私人/ b”动态以后如果你选择这样做。然而,当心首先右键单击一个文件夹,选择“添加文件夹和子文件夹”将通过私人目录递归。(我已经提交错误报告,显然这种行为将改变是一致的w / genpath在将来的版本)。

craq

感谢,正是它所宣传的那样。我想做的一件事就是匹配的序列2目录(即排除a / b但包括a / c和d / b)。从在genpath这似乎不可能,但可能通过解析genpath的输出。根据评论,你已经做了这个旧版本。你能把这个文件交换吗?或者有人知道如何访问文件的历史吗?

马塞尔•罗兰

谢谢。非常简单和美好。避免与包文件夹,警告我建议忽略包默认文件夹。这样做用以下代码替换81行代码:
如果~(正则表达式(目录名,[' ^ \。美元| ^ \ \。美元| ^ \ @。* | ^ \ +。* | ^私人美元|”excludeStr],“开始”))

奥利弗·伍德福德

一个对待工作。

塞巴斯蒂安。

它说在锡。优秀的子文件夹排斥。

杰西·霍普金斯

谢谢你的评论蒂埃里。我看修改genpath,出于某种原因,在我的第一次尝试,排除路径仍然会说,但不是那棵树下。当我去调查regexp业务删除的路径。

一眼,我意识到可以直接修改genpath完成这一目标,应该运作更快,因为它不会在忽略目录递归。

蒂埃里Dalon

我认为regexp与选择‘分裂’是很新鲜的事。= >这个可能不会R14或以前的工作。
为优化你为什么不修改直接genpath不进入排除目录?

MATLAB版本兼容性
创建R2007b
兼容任何释放
平台的兼容性
窗户 macOS Linux

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!