Get full path of directory that is on Matlab search path
31 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Justin Solomon
il 8 Lug 2017
Commentato: Justin Solomon
il 9 Lug 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 Commenti
Risposta accettata
per isakson
il 8 Lug 2017
One way
>> s = what('InUse');
>> s.path
ans =
h:\m\FEX\InUse
where InUse is a folder on my Matlab path
3 Commenti
per isakson
il 8 Lug 2017
Yes that right. Doc says: " You do not need to specify the @ or + symbol for class and package folders."
Più risposte (1)
Walter Roberson
il 8 Lug 2017
Modificato: Walter Roberson
il 8 Lug 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
Vedere anche
Categorie
Scopri di più su Search Path in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!