【问题标题】:Using dir function in Matlab - how to get rid of `.` and `..`在 Matlab 中使用 dir 函数 - 如何摆脱 `.` 和 `..`
【发布时间】:2026-02-06 20:05:01
【问题描述】:

我正在使用dir 函数列出文件夹的内容,但它为前两个文件夹提供了...。有什么办法可以摆脱这个愚蠢的过程。

我可以在dir 函数中使用正则表达式吗? (如果可以的话,这可以是一个解决方案)

【问题讨论】:

    标签: matlab file-io directory dir


    【解决方案1】:

    我不知道任何内置解决方案,但我倾向于执行以下操作:

    d = dir ('C:\');
    d(~[d.isdir])= []; %Remove all non directories.
    names = setdiff({d.name},{'.','..'});
    

    setdiff 命令删除不需要的元素。


    摆脱... 的另一种廉价方法是使用通配符(仅限Windows):

    d = dir ('C:\*.*');
    

    【讨论】:

      【解决方案2】:

      这个怎么样

      list = dir('/var/temp');
      list = list(3:end,:);
      

      这当然是假设前两个条目确实是 ...,这可能并非所有操作系统都如此

      【讨论】:

      • 在 Mac、Linux 和 Windows 上,前两个条目是 ...
      【解决方案3】:

      根据本文档的声音,dir 仅显示操作系统本身返回的内容,因此我怀疑您是否能够在不对返回的列表进行一些后期处理的情况下抑制它

      http://www.mathworks.co.uk/help/techdoc/ref/dir.html

      dir 确实支持通配符 *

      【讨论】: