如何在调用MATLAB';s-dir函数
使用MATLAB,我需要从目录中提取一组“有效”文件。通过valid,我的意思是它们不能是目录,也不能是隐藏文件。筛选出目录很容易,因为如何在调用MATLAB';s-dir函数,matlab,filesystems,hidden-files,Matlab,Filesystems,Hidden Files,使用MATLAB,我需要从目录中提取一组“有效”文件。通过valid,我的意思是它们不能是目录,也不能是隐藏文件。筛选出目录很容易,因为dir返回的结构有一个名为isDir的字段。但是,我还需要过滤掉MacOSX或Windows可能放在目录中的隐藏文件。最简单的跨平台方法是什么?我真的不明白隐藏文件是如何工作的。您可以组合并检查隐藏文件 folder = uigetdir('please choose directory'); fileList = dir(folder); %# remove
dir
返回的结构有一个名为isDir的字段。但是,我还需要过滤掉MacOSX或Windows可能放在目录中的隐藏文件。最简单的跨平台方法是什么?我真的不明白隐藏文件是如何工作的。您可以组合并检查隐藏文件
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) = [];
假设所有隐藏文件都以“.”开头。以下是删除它们的快捷方式:
s = dir(target); % 'target' is the investigated directory
%remove hidden files
s = s(arrayfun(@(x) ~strcmp(x.name(1),'.'),s))
没有Matlab专家,但隐藏文件就是这样工作的:在Mac OS X(和其他Unix系统)上,它们的名称以句点(
)开头。在窗口上,将设置其“隐藏”属性。Windows隐藏文件仅隐藏在Windows文件系统上,即FAT或NTFS。@gnovice:谢谢您的修复。啊,复制粘贴忘记,我存在的祸根!出于好奇,[~,Out]=something()
语法在比我使用的更高版本上合法吗?我通常把~
称为垃圾桶
——但它仍然可以分配任务。@John Berryman:是的,如果我没记错的话,这从2008x起就是合法的。~
将输出赋值为nothing。前两个条目可能不正确。及例如,如果您有一个以#开头的Emacs临时文件,它将首先出现。@Brian:谢谢您的提醒。