Get full path of directory that is on Matlab search path
    13 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!


