2016-04-02 18 views
0

png、jpg、bmpで始まるファイル名のリストを3つ作成します。すべてのファイルは、ディレクトリツリー内の画像です:/ year_month/year_month_day /あなたがここに見ることができるよう:MATLABのstringから選択したファイルの特定の名前を含むテーブルを作成します。

./20160203/20160203_png01_test1.png.tmp

./20160203/20160203_jpg01_test2.jpg.tmp

./20160203/20160203_bmp01_test3.bmp.tmp

./20160204/20160204_png01_test1.png.tmp

./20160204/20160204_jpg01_test2.jpg.tmp

./20160204/20160204_bmp01_test3.bmp.tmp

./20160205/20160205_png01_test1.png.tmp

./20160205/20160205_jpg01_test2.jpg.tmp

./20160205/20160205_bmp01_test3.bmp.tmp

たとえば、リスト1のためのすべての拡張子(JPG、BMPやPNG)のために写真の名前が含まれている必要があり、すべてのリストは持っている必要があります。

./20160203/20160203_png01_test1.png.tmp

./20160204/20160204_png01_test1.png.tmp

./20160205/20160205_png01_test1.png.tmp

リスト2は持っている必要があります。

./20160203/20160203_jpg01_test2.jpg.tmp

./20160204/20160204_jpg01_test2.jpg.tmp

./20160205/20160205_jpg01_test2.jpg.tmp

とLIST3同じですが、BMPと...このような

私のコードを見て:

workdir = '/home/user/201602/'; 
cd(workdir); 

command =   ['find -name *test*.tmp']; 
[status,cmdout] = system(command); 
c =    strsplit(strtrim(cmdout)); 
n_files =   length(c); 
format_id =  cell(n_files,1); 

for ifile =1:n_files      
     d = textscan(c{ifile},'%s%s', 'Delimiter','_'); 
     s1 = d{2}{:}; 
     format_id{ifile} = s1; 
end 

format_id = unique(format_id); 
nformat = length(format_id); 

for iformat = 1:nformat 

    templist = [format_id{iformat} '.dat'];   
    fid = fopen(templist,'w'); 

    for ifiles =1:n_files 
     fprintf(fid, '%6s\n', c{iformat}); 
    end 

    fid = fclose(fid); 
end 

私はリストを取得:png01.dat、jpg01.dat、および罰金であるbmp01.datが、すべてのリストに私は絵の名前だけでなく、それぞれの拡張子を持つ名前だけでなく、最初に、それぞれの拡張子(bmp jpgとpng)を持つファイルだけを選択し、その後それらをリストに送信するために "インデックス"を作成したいと思います。どうすればいい?

私は問題がはっきりしていることを願っています。あなたの助けを前にありがとう。

+1

を全体に追加の新しい行を削除してくださいあなたの質問は読みやすいようになります。さらなる提案として: '' dir'(http://ch.mathworks.com/help/matlab/ref/dir.html) - コマンドを見て、 'system'を置き換えてください。 – Matt

答えて

0

ストアそうのような拡張子:

extensions = {'.bmp', '.jpg', '.png'} 

あなたはその後、 '.BMP' を返しますextensions{1}に、アクセスすることができます。ループのイテレータをiとすると、extensions{i}をリストの末尾に達するまですべて取り出すことができます:length(extensions)

セレクタとして使用するには:

command = [strcat('find -name *test*', extensions{1}, '.tmp')]; 
0

@Mattによって示唆されるように、ポータブルではありませんdir機能の代わりに、systemの使用を検討:

workdir = '/home/user/201602/'; 
jpg_files = dir(fullfile(workdir, '*.jpg.tmp')); 
png_files = dir(fullfile(workdir, '*.png.tmp')); 
bmp_files = dir(fullfile(workdir, '*.bmp.tmp')); 
関連する問題