2014-05-19 78 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函數不適用於通配符。此外,我認爲行爲是一樣的ls函數返回不薑餅,但如果薑餅是一個文件夾返回裏面。謝謝 – ASantosRibeiro