主要内容

dir

列出文件夹内容

说明

dir 列出当前文件夹中的文件和文件夹。

dir name 列出与 name 匹配的文件和文件夹。如果 name 为文件夹,dir 列出该文件夹的内容。使用通配符 *** 来匹配模式。例如,dir *.mlx 列出扩展名为 .mlx 的所有文件,而 dir ** 包括所有子文件夹中的文件。

示例

listing = dir(name) 返回结构体数组中的属性,例如每个文件或文件夹上次修改的时间。

示例

示例

全部折叠

假设 myfolder 位于当前工作文件夹中且包含三个文件。列出其内容。

dir myfolder
.          ..         myfile1.ext  myfile2.ext  myfile3.ext

转至 myfolder,列出文件名中包含 2 且扩展名为 .ext 的文件。

cd myfolder
dir *2*.ext
myfile2.ext

使用递归搜索通配符 ** 列出当前文件夹及其子文件夹中的文件。

假设当前文件夹包含以下内容。

file1.ext
folder2
     file2.ext
     folder3
         file3.ext

列出层次结构中的所有文件。

dir **
Files Found in Current Folder:

.          ..         file1.ext  folder2  

Files Found in: folder2

.          ..         file2.ext  folder3  

Files Found in: folder2/folder3

.          ..         file3.ext  

当处理关于多个文件的详细信息时,将输出结构体转换为表通常很有帮助。

假设当前文件夹包含以下内容。

file1.ext
folder2
     file2.ext
     folder3
         file3.ext

使用 ** 通配符请求获得整个层次结构的详细信息。输出是结构体数组。date 字段的类型为 chardatenum 字段是序列日期值。

listing = dir("**")
listing = 

  11x1 struct array with fields:

    name
    folder
    date
    bytes
    isdir
    datenum

将该结构体转换为表,并用 datetime 值替换 date

tbl = struct2table(listing);
tbl.date = datetime(tbl.datenum,ConvertFrom="datenum");
tbl = removevars(tbl,"datenum")
tbl = 

  11x5 table

        name               folder                   date            bytes    isdir  
    _____________    ___________________    ____________________    _____    _____

    {'.'        }    {'/mycurrent'     }    01-Mar-2024 15:45:35      0      true
    {'..'       }    {'/mycurrent'     }    01-Mar-2024 15:44:10      0      true
    {'file1.ext'}    {'/mycurrent'     }    01-Mar-2024 15:45:45      8      false
    {'folder2'  }    {'/mycurrent'     }    01-Mar-2024 15:45:16      0      true 
    .
    .
    .

要查找数据的子集,请对表进行索引。例如,只提取文件夹,然后排除 ... 文件夹。

folders = tbl(tbl.isdir,:);
namedFolders = folders(~matches(folders.name,[".",".."]),:)
namedFolders =

  2x5 table

        name                folder                  date             bytes    isdir
    ___________    ______________________    ____________________    _____    _____

    {'folder2'}    {'/mycurrent'        }    01-Mar-2024 15:45:16      0      true 
    {'folder3'}    {'/mycurrent/folder2'}    01-Mar-2024 15:44:58      0      true 

输入参数

全部折叠

具有完整或相对路径的文件或文件夹名称,指定为字符串标量或字符向量。

对于位于远程位置的文件和文件夹,您必须将完整路径指定为统一资源定位器 (URL)。Internet URL 必须包含协议类型 "http://""https://"。有关详细信息,请参阅处理远程数据

要搜索模式或搜索多个文件夹,请使用通配符 ***dir 函数始终将 * 字符视为通配符,即使在支持文件名中包含 * 的文件系统上也是如此。

通配符

含义

*

* 是文件或文件夹名称的一部分时,它表示任意数量的字符。例如,dir *.mat 列出当前文件夹中的所有 MAT 文件。

* 在路径中并且仅紧邻文件分隔符时,它表示单级层次结构。例如,dir */*.mat 列出当前文件夹下正好位于一个文件夹中的 MAT 文件。

**

** 表示在子文件夹中进行递归搜索。例如,dir ** 列出当前文件夹及其所有子文件夹中的文件。如果在 ** 通配符旁边指定字符,它们必须为文件分隔符。

在 Microsoft® Windows® 系统上,dir 支持 DOS 生成的短文件名以及快捷方式文件 (.lnk)。

输出参量

全部折叠

文件属性,以 n×1 结构体数组形式返回,其中 n 是与 name 匹配的文件和文件夹的数量。

结构体包含以下字段。

字段名称

描述

name

文件或文件夹名称

char

folder

文件或文件夹的位置

char

date

修改日期时间戳

char

bytes

文件大小(以字节为单位)

double

isdir

如果 name 是文件夹,则为 1;如果 name 是文件,则为 0

logical

datenum

修改日期是一个序列日期值。

double

对于 Internet URL,如果文件大小信息不可用,则 bytes 字段为 NaN

限制

  • MATLAB® 不支持要求身份验证的 Internet URL。

  • MATLAB Online™ 支持与 Microsoft OneDrive™ 文件和文件夹相关联的 Internet URL,而 MATLAB 的安装版本仅支持本地 OneDrive 文件。

提示

  • 如果 dir 无法查询文件,它将在输出结构体中返回这些默认值。

    date: '' 
    bytes: [] 
    isdir: 0 
    datenum: [] 
    

    当查询指向已移动、已删除或已重命名的目标的符号链接时,最常出现此问题。要排除这些无效条目,您可以将该结构体转换为表,并删除具有空值的行。

    listing = struct2table(dir); 
    listing(isempty(listing.bytes),:) = [];
    
  • 要获取 Microsoft Windows 平台上可用驱动器的列表,请使用 DOS net use 命令。

    dos("net use")

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出

全部展开