2014-05-19 2 views
1

제 질문은 간단하지만 아직 쉬운 해결책을 찾지 못했습니다. N 개의 파일이나 폴더가있는 메인 디렉토리가 있고 전체 디렉토리를 반환하려는 파일/폴더의 패턴 (부분적으로 이름이 있음)이 있다고 가정 해 보겠습니다. 어떻게하면 간단하게 처리 할 수 ​​있습니까? 나는 아래의 예를 줄 것이다 :패턴을 사용하여 전체 디렉토리 반환

main_dir='/home/ddd/main_folder/'; 

files_in_main_dir=ls(main_dir) 

pattern='*Ginger*'; 

%%% code to return the full path 

% ? 

%%% 

files_in_main_dir= 

Cupcake 

Donut 

Gingerbread 


return_path= 

/home/ddd/main_folder/Gingerbread 

편집 : 이 끔찍한 아직 가능한 솔루션입니다 :

files_in_main_dir=ls(main_dir); 
find_ls=strfind(files_in_main_dir,' '); 
find_pattern=strfind(files_in_main_dir,pattern); 

begin_pattern=find_ls(find(find_ls<find_pattern,1,'last')); 

if length(find_ls)>find(find_ls<find_pattern,1,'last'), ... 
     end_pattern=find_ls(find(find_ls<find_pattern,1,'last')+1); 
else 
     end_pattern=length(files_in_main_dir); 
end 

pattern=files_in_main_dir(begin_pattern+1:end_pattern-1); 

full_dir_pattern=[main_dir,pattern] 

답변

0

은 아마도 내가 오해,하지만 당신은 문자열로이 작업을 수행 할 수없는 것처럼 보인다 어울리는. 여기

내가 할 것 인 것이다 :

d = dir(fullfile(main_dir,'*ginger*')) 

이제 당신과 같이 전체 파일 이름을 얻을 수 있습니다 : 두 제안은 내 문제에 대해 작동

fullfile(main_dir,d(1).name) 
+0

합니다. 그러나 이것은 더 간단합니다. 이상하게도 dir 함수는 와일드 카드로 작동하지 않는다고 생각했습니다. 또한이 동작은 Gingerbread를 반환하지 않는 ls 함수와 동일하다고 생각했지만 Gingerbread가 폴더이면 무엇이 들어 있는지 반환합니다. 감사 – ASantosRibeiro

관련 문제