如何在调用MATLAB dir函数后过滤隐藏文件

时间:2011-03-08 15:14:55

标签: matlab filesystems hidden-files

使用MATLAB,我需要从目录中提取一系列“有效”文件。有效,我的意思是它们不能是目录,它们不能是隐藏文件。过滤目录很容易,因为dir返回的结构有一个名为isDir的字段。但是,我还需要过滤掉MacOSX Windows可能放在目录中的隐藏文件。什么是最简单的跨平台方式?我真的不明白隐藏文件是如何工作的。

2 个答案:

答案 0 :(得分: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) = [];

答案 1 :(得分:4)

假设所有隐藏文件都以“。”开头。这是删除它们的快捷方式:

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

%remove hidden files
s = s(arrayfun(@(x) ~strcmp(x.name(1),'.'),s))