2011-03-08 3 views
4

MATLAB을 사용하여 디렉토리에서 "유효한"파일의 배열을 추출해야합니다. 유효하면 디렉토리가 아니어야하며 숨겨진 파일이 아니어야합니다. dir이 반환하는 구조에는 isDir이라는 필드가 있으므로 디렉토리 필터링은 쉽습니다. 그러나 나는 또한 MacOSX 또는 Windows가 디렉토리에 넣을 수있는 숨겨진 파일을 필터링해야합니다. 가장 쉬운 방법은 플랫폼 간입니다. 숨겨진 파일의 작동 방식을 이해하지 못합니다.MATLAB의 dir 함수를 호출 한 후 숨겨진 파일을 필터링하는 방법

+2

Mac OS X (및 다른 Unix 시스템)에서 Matlab 전문가는 아니지만 숨겨진 파일이 작동하는 방식입니다. 이름은 마침표 ('.')로 시작됩니다. Windows에서는 "숨김"속성이 설정됩니다. Windows 숨김 파일은 FAT 또는 NTFS와 같은 Windows 파일 시스템에서만 숨겨집니다. –

답변

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) = []; 
+0

@gnovice : 고맙습니다. 아, 복사 - 붙여 넣기 - 잊어 버려, 내 존재를 망쳐 라! – Jonas

+0

그 트릭을 했어! – JnBrymn

+0

호기심 때문에, 내가 사용하고있는 것보다 이후 버전에서'[~, out] = something()'문법이 유효합니까? 나는 보통'~'을'휴지통 '이라고 부르지 만, 여전히 할당을합니다. – JnBrymn

4

모든 숨김 파일이 '.'로 시작한다고 가정합니다.

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

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