Как проверить, находится ли папка в пути поиска
У меня есть папка на внешнем диске, в которой есть 50 + папок, и каждая папка имеет 2000+ файлов. Каждая из 50 папок не имеет вложенной папки. Я хочу добавить все файлы на пути поиска MATLAB и, следовательно,
Я выполнил addpath(genpath(...))
. Это займет около 5 минут. Я не хочу повторять операцию снова, если папки находятся на пути поиска. Как мне это определить?
Я знаю, что могу проверить, находится ли файл в пути поиска с помощью which
, но я хочу посмотреть, есть ли основная папка (которая имеет 50 вложенных папок) и подпапки находятся на пути поиска. Как мне это сделать?
Я даже пробовал использовать команду exist
, но она дает мне ненулевое значение, даже если папка не находится в пути поиска.
1 ответ:
Единый случай поиска по каталогу
%%// path_to_be_searched is the folder or directory to be detected %%// to be in path or not %%// colon is the separator used for paths under Linux. %%// For Windows and others, it needs to be investigated. path_list_cell = regexp(path,pathsep,'Split') if any(ismember(path_to_be_searched,path_list_cell)) disp('Yes, this directory is in MATLAB path'); else disp('No, this directory is not in MATLAB path'); end
Основной каталог вместе с подкаталогами поисковый случай с добавлением опции
Для базового пути наряду с поиском по подкаталогу, следующий код будет пытаться найти соответствие для каждого подкаталога, а также базового пути и добавить, который когда-либо отсутствует. Таким образом, даже если вы выборочно удалили любой подкаталог или даже базовый путь из пути, этот код позаботится о добавлении всего, что отсутствует в пути.
%%// basepath1 is the path to the main directory with sub-directories that %%// are to detected for presence basepath_to_be_searched = genpath(basepath1) basepath_list_cell = regexp(basepath_to_be_searched,pathsep,'Split') %%// Remove empty cells basepath_list_cell = basepath_list_cell(~cellfun(@isempty,basepath_list_cell)) path_list_cell = regexp(path,pathsep,'Split'); ind1 = ismember(basepath_list_cell,path_list_cell) %%// Add the missing paths addpath(strjoin(strcat(basepath_list_cell(~ind1),pathsep),'')) %%// strjoin is a recent MATLAB addition and is also available on file-exchange - %%// http://www.mathworks.in/matlabcentral/fileexchange/31862-strjoin