这是一个非常经典的问题,因为 ls 并不是 DOS 的原生命令,而是从 Unix/Linux 世界借鉴过来的。

在传统的 DOS (Disk Operating System) 环境中,没有 ls 命令,DOS 中最核心、最常用的列出文件和目录的命令是 dir。
DOS 的原生命令:dir
dir (directory) 是 DOS 环境下查看目录内容的标准命令,它功能强大,并且有很多参数可以调整输出格式。
基本用法
在命令提示符下,直接输入 dir 并按回车:
C:\> dir
这会列出当前驱动器当前目录下的所有文件和子目录。

常用参数
dir 命令的强大之处在于其丰富的参数:
dir /p: 分页显示,当内容很多,一屏显示不下时,会暂停,按任意键继续翻页。C:\> dir /p
dir /w: 宽格式显示,只显示文件名和扩展名,每行显示多个条目,不显示文件大小、日期和时间等信息。C:\> dir /w
dir /a: 显示所有文件,包括隐藏文件和系统文件,默认情况下,dir不会显示这些特殊属性文件。dir /a:h只显示隐藏文件。dir /a:s只显示系统文件。dir /a:d只显示目录。dir /a显示所有文件(包括隐藏和系统文件)。C:\> dir /a
dir /o: 排序显示。dir /o:n按名称排序 (Name)。dir /o:s按大小排序 (Size)。dir /o:d按日期和时间排序 (Date)。dir /o:e按扩展名排序 (Extension)。C:\> dir /o:n
dir /s: 递归显示,不仅显示当前目录,还会显示所有子目录及其下的文件。C:\> dir /s
dir [路径]: 列出指定路径下的内容。C:\> dir C:\Windows
dir [文件名]: 列出指定的文件信息。C:\> dir autoexec.bat
为什么会有 ls 命令?—— 来自 Unix/Linux 的借鉴
ls (list) 是 Unix 和 Linux 操作系统中列出目录内容的命令,由于其简洁和高效,许多在 Windows 环境下工作的开发者、系统管理员和高级用户习惯了 ls。
ls 的基本用法
在 Unix/Linux 终端中:
$ ls
ls 的常用参数
ls 的参数同样非常丰富,并且通常以单个短横线 开头:

ls -l: 以长格式显示,包含文件的详细信息(权限、所有者、大小、修改日期、文件名等),这是最常用的参数之一。$ ls -l
ls -a: 显示所有文件,包括以 开头的隐藏文件。$ ls -a
ls -h: 与-l配合使用,以人类可读的格式显示文件大小(如 K, M, G)。$ ls -lh
ls -R: 递归显示,类似于 DOS 的dir /s。$ ls -R
ls -t: 按修改时间排序,最新的在最前面。$ ls -t
在现代 Windows (命令提示符和 PowerShell) 中如何使用 ls
随着 Windows 系统的演变,情况变得更加复杂。
A. 在 cmd.exe (命令提示符) 中
-
原生
dir命令依然有效,所有上面提到的dir用法在 Windows 的命令提示符中都可以正常工作。 -
ls命令是dir的一个别名,从 Windows 10 (版本 17063) 开始,微软在命令提示符中加入了 Unix 常用命令的别名,其中就包括ls。当你在
cmd.exe中输入ls时,它实际上会自动执行dir /w的效果(宽格式显示)。C:\> ls # 输出效果等同于 dir /w
你也可以通过
doskey命令自定义别名,例如将ls永久设置为dir /p:doskey ls=dir /p
B. 在 PowerShell 中 (更现代、更强大的选择)
PowerShell 是 Windows 现代化的命令行工具,它不直接使用 cmd.exe 的命令。
-
Get-ChildItem是 PowerShell 的核心命令,功能等同于dir和ls,它是获取子项(文件和目录)的命令。PS C:\> Get-ChildItem # 简写形式 PS C:\> gci
-
PowerShell 提供了
ls的别名,为了方便从 Unix/Linux 迁移过来的用户,PowerShell 内置了ls作为Get-ChildItem的别名。PS C:\> ls # 输出效果等同于 Get-ChildItem
-
PowerShell 的参数更强大:
ls -Recurse: 等同于dir /s或ls -R。ls -Force: 等同于dir /a,显示隐藏文件。ls -Name: 只显示名称,类似dir /b。ls | Where-Object { $_.Length -gt 1MB }: 可以轻松筛选出大于 1MB 的文件,这是dir难以做到的。
总结与对比
| 特性/命令 | DOS dir |
Unix/Linux ls |
Windows cmd.exe ls |
Windows PowerShell ls |
|---|---|---|---|---|
| 来源 | DOS 原生 | Unix/Linux 原生 | dir 的别名 |
Get-ChildItem 的别名 |
| 基本功能 | 列出文件和目录 | 列出文件和目录 | 列出文件和目录 (宽格式) | 列出文件和目录 |
| 默认行为 | 详细列表 | 简洁列表 | 宽格式列表 | 详细列表 |
| 递归显示 | dir /s |
ls -R |
dir /s (需用 dir) |
ls -Recurse |
| 显示隐藏文件 | dir /a |
ls -a |
dir /a (需用 dir) |
ls -Force |
| 排序 | dir /o |
ls -t (按时间) 等 |
dir /o (需用 dir) |
Sort-Object (管道) |
| 现代性 | 已过时 | 依然强大且主流 | 基础,功能有限 | 非常强大,可扩展 |
- 如果你使用的是传统的 DOS 环境,或者只是想快速在 Windows 命令提示符下看一眼文件,请使用
dir。 - 如果你来自 Unix/Linux 背景,习惯使用
ls,在 Windows 的 命令提示符 (cmd.exe) 中直接输入ls是可以的,它等同于dir /w。 - 如果你使用的是现代的 PowerShell,
ls也可以用,并且功能非常强大,但为了更深入地利用 PowerShell 的能力,建议学习Get-ChildItem(及其别名gci) 及其管道操作。
