4

MATLAB を使用して、ディレクトリから「有効な」ファイルの配列を抽出する必要があります。有効とは、ディレクトリであってはならず、隠しファイルであってはならないことを意味します。dir返される構造には isDir というフィールドがあるため、ディレクトリのフィルタリングは簡単です。ただし、MacOSXまたはWindows がディレクトリに配置する可能性のある隠しファイルも除外する必要があります。これを行う最も簡単なクロスプラットフォームの方法は何ですか? 隠しファイルの仕組みがよくわかりません。

4

2 に答える 2

5

DIRFILEATTRIBを組み合わせて隠しファイルをチェックできます。

folder = uigetdir('please choose directory');
fileList = dir(folder);

%# remove all folders
isBadFile = cat(1,fileList.isdir); %# all directories are bad

%# loop to identify hidden files 
for iFile = find(~isBadFile)' %'# loop only non-dirs
   %# on OSX, hidden files start with a dot
   isBadFile(iFile) = strcmp(fileList(iFile).name(1),'.');
   if ~isBadFile(iFile) && ispc
   %# check for hidden Windows files - only works on Windows
   [~,stats] = fileattrib(fullfile(folder,fileList(iFile).name));
   if stats.hidden
      isBadFile(iFile) = true;
   end
   end
end

%# remove bad files
fileList(isBadFile) = [];
于 2011-03-08T15:27:47.740 に答える
5

すべての隠しファイルが「.」で始まると仮定します。それらを削除するショートカットは次のとおりです。

s = dir(target); % 'target' is the investigated directory

%remove hidden files
s = s(arrayfun(@(x) ~strcmp(x.name(1),'.'),s))
于 2012-07-05T20:38:19.963 に答える