删除matlab中的path和子path

我一直在寻找一种简单的方法从matlab中删除一堆path。 我正在使用一个相当大的程序,它在其目录中包含许多path。 我也使用svn版本处理和我使用很多分支,一般包含一些相同的function,一些修改和一些只存在于一个分支。

问题是,当我设置一个分支的path(使用自定义函数),然后想要更改目录到另一个path,第一部分是讨厌删除。 我用过

rmpath(path1,path2,...); 

但是,这需要手动input每个path。 由于所有的path都有一个共同的基础目录,我想知道,有无论如何使用通配符从path中删除完整的目录? 我使用一台Windows机器。

尝试使用genpath。 给定基目录作为输入,genpath返回该基目录加上所有子目录,递归。

 rmpath(genpath(base_directory)); 

没有通配符支持。 您可以编写自己的Matlab函数来添加和删除项目中的所有路径,或者支持正则表达式匹配。 做项目本身的一部分是很方便的,所以它可以意识到所有需要添加或删除的dirs,并且如果有必要的话,可以做其他库初始化的东西。

在MATLAB中,你可以递归地删除一个文件夹…

rmdir(path, 's');

测试R2014a(不知道什么时候这是介绍)。

基因路径答案适用于fragment*情况,而不是*fragment*情况。

笨重,但作品:

 pathlist = path; pathArray = strsplit(pathlist,';'); numPaths = numel(pathArray); for n = 1:numPaths testPath = char(pathArray(n)) isMatching = strfind(testPath,'pathFragment') if isMatching rmpath(testPath); end end 

我有一个较短的答案:

 function rmpathseb(directory) % Retrieve the subfolders folders = dir(directory); % Remove folders one by one % The first two are '.' and '..' for i = 3 : length(folders); rmpath([pwd , '\' , directory , '\' , folders(i).name]); end end