Get full path of directory that is on Matlab search path
34 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Justin Solomon
el 8 de Jul. de 2017
Comentada: Justin Solomon
el 9 de Jul. de 2017
Hello,
I have a folder called 'mydir' that is in the Matlab search path but not in my current directory. Thus isdir('mydir') is true. Is there a way to easily extract the full path of 'mydir' in this scenario?
Thanks, Justin
0 comentarios
Respuesta aceptada
per isakson
el 8 de Jul. de 2017
One way
>> s = what('InUse');
>> s.path
ans =
h:\m\FEX\InUse
where InUse is a folder on my Matlab path
3 comentarios
per isakson
el 8 de Jul. de 2017
Yes that right. Doc says: " You do not need to specify the @ or + symbol for class and package folders."
Más respuestas (1)
Walter Roberson
el 8 de Jul. de 2017
Editada: Walter Roberson
el 8 de Jul. de 2017
Easy? Ummm, how about possible in a few lines?
tofind = 'mydir';
esctofind = regexptranslate('escape', tofind); %in case it has special characters
dirs = regexp(path, pathsep,'split'); %cell of all individual paths
temp = unique(cellfun(@(P) strjoin(P(1:find(strcmp(esctofind, P),1,'last')),filesep), regexp(dirs,filesep,'split'), 'uniform', 0)); %don't let the blue smoke escape
fullpaths = temp(~cellfun(@isempty,temp)); %non-empty results only
Notes:
- fullpaths will be a cell array of character vectors
- fullpaths might have multiple entries, as there might be multiple matches
- it is possible for any one path to have multiple occurrences of the same directory name; this code deliberately goes for the longest version. For example if the search was for 'matlab' then it would pick /Applications/MATLAB_R2017a.app/toolbox/matlab/datatools/inspector/matlab instead of /Applications/MATLAB_R2017a.app/toolbox/matlab
- the directory name to find may have special characters such as '.' which will be treated literally, not as wild-cards
- the code as posted will not match package directories that have '+' or '@' before the name being searched for, but that would be easy to add. The code will find such directories if you ask for them specifically.
- the code has been designed to work on Windows, Mac, and Linux
Ver también
Categorías
Más información sobre File Operations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!