Как отфильтровать скрытые файлы после вызова dir-функции MATLAB - PullRequest
4 голосов
/ 08 марта 2011

Используя MATLAB, мне нужно извлечь массив «допустимых» файлов из каталога.Под действительным я имею в виду, что они не должны быть каталогом и не должны быть скрытым файлом.Фильтрация каталогов достаточно проста, потому что структура, которую возвращает dir, имеет поле с именем isDir.Однако мне также нужно отфильтровать скрытые файлы, которые MacOSX или Windows могут поместить в каталог.Какой самый простой кроссплатформенный способ сделать это?Я не очень понимаю, как работают скрытые файлы.

Ответы [ 2 ]

5 голосов
/ 08 марта 2011

Вы можете объединить DIR и FILEATTRIB , чтобы проверить наличие скрытых файлов.

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) = [];
4 голосов
/ 06 июля 2012

Предполагается, что все скрытые файлы начинаются с '.'. Вот ярлык для их удаления:

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

%remove hidden files
s = s(arrayfun(@(x) ~strcmp(x.name(1),'.'),s))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...