Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在调用MATLAB';s-dir函数_Matlab_Filesystems_Hidden Files - Fatal编程技术网

如何在调用MATLAB';s-dir函数

如何在调用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

使用MATLAB,我需要从目录中提取一组“有效”文件。通过valid,我的意思是它们不能是目录,也不能是隐藏文件。筛选出目录很容易,因为
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:谢谢您的提醒。