首页/系统/Linux 运维命令速查/ls 列出目录内容
文件与目录76 条

ls 列出目录内容

最常用的目录查看命令,支持长格式、人类可读大小、按时间排序与递归展示,配合通配符可快速定位文件。

Linux 运维命令速查系统更新于 2026-10-13

ls 是什么

ls 读取目录项并输出,来自 coreutils。三个默认行为决定了它的使用手感:不显示以点开头的隐藏文件、按名称排序、把结果排成多列以适应终端宽度。加上 -l 后是长格式,每行包含权限、链接数、属主、属组、大小、时间、名称七段信息,前面还有一行 total 表示这些文件占用的块数。需要注意 ls -l 显示的大小是文件长度(apparent size),不是磁盘实际占用,目录显示的数值也不是内容总量。

基本信息

适用平台Linux 全发行版与 macOS(GNU coreutils / BSD ls);-h、-S、--time-style 等属 GNU 常见扩展,BSD 版部分选项不同
命令语法ls [选项] [路径...];不给路径默认列当前目录
常用选项-l 长格式、-a 含隐藏文件、-A 含隐藏文件但不含 . 与 ..、-h 人类可读大小、-t 按修改时间排序、-S 按大小排序、-r 反向、-R 递归、-d 只列目录本身、-1 单列输出、-i 显示 inode、-n 用数字显示属主
权限要求列出目录内容需要该目录的 r 权限;要看到属主、权限、时间等元数据还需要 x 权限
输出稳定性颜色、排序与字段宽度都会随 locale、终端与别名变化,不适合作为脚本的解析输入

典型使用场景

  • 快速确认内容与归属:ls -alh 一眼看到权限、属主、大小与隐藏文件
  • 找最近改动的文件:ls -lt 按时间倒序,配合 head 定位最新产物
  • 找大文件:ls -lSh 按大小排序,先粗筛再进 du 精确定位
  • 查 inode:-i 配合 -a 判断两个名字是否指向同一数据(硬链接),排查删除异常时也会用到
  • 只看目录本身:ls -ld /etc 不展开内容,只看这个目录的权限与属主
  • 核对文件类型:首列字符区分普通文件、目录、符号链接、设备与套接字

常用示例

常用示例
ls -alh                              # 全部文件 + 长格式 + 可读大小
ls -lt --time-style=long-iso | head   # 按时间倒序,ISO 格式更好读
ls -lSh /var/log | head -n 10         # 按大小倒序找大文件
ls -ld /etc /var                      # 只看目录本身
ls -lRi /data | head -20              # 递归并显示 inode
ls -F /usr/bin | head                 # 用符号标注类型(/ 目录、* 可执行)
ls -l --block-size=1 bigfile          # 精确到字节,便于计算

长格式逐列读法

位置含义怎么看
首字符文件类型:- 普通文件、d 目录、l 符号链接、c/b 字符或块设备、s 套接字、p 命名管道先确认类型再理解后面的权限
后 9 位权限位,按属主、属组、其他人三段排列 rwx看到 s 或 t 说明有 SUID/SGID/sticky 特殊位
链接数硬链接计数;对目录来说是子目录数加 2突然变大要留意是否被挂载点影响
属主与属组文件的所有者与所属组,-n 可显示为数字 UID/GID残留的旧账号数字 ID 是迁移后的常见现象
大小文件长度(apparent size);目录显示的是目录项自身大小不是磁盘占用,也不代表目录内容总量
时间默认显示修改时间 mtime访问时间与 inode 变更时间要用 stat 查看
ls -l 首行的 total 是该目录下文件占用的块数(GNU 默认以 1KiB 为单位),可以粗略理解为这批文件的磁盘占用,但它不含子目录内容,也不是目录大小。
-a 会连 . 与 .. 一并列出,脚本里通常只需要 -A(列出隐藏文件但不含这两个),再配合 -1 单列输出与 --color=never 便于比较。
不要用 ls 的输出做脚本判断:文件名可以包含空格、换行与通配符,颜色码与排序受 locale 影响。要可靠地遍历文件用 find -print0 配 xargs -0,要读取元数据用 stat --printf。

易错点

  • 脚本里解析 ls 输出是经典错误:文件名含空格或换行、颜色码与 locale 排序都会让解析结果错位,应改用 find -print0、stat 等稳定接口
  • ls -l 只显示 mtime,排查「文件被谁动过」还需要 atime 与 ctime,用 stat 查看全部三个时间
  • 把目录的显示大小当成目录内容总量:目录项本身通常只有几 KB,真实占用要用 du
  • 在几十万文件的目录里执行 ls -R 会刷爆终端并拖慢会话,快速定位请用 find 或按层级查看
  • -h 只影响显示精度并会四舍五入,需要精确字节数时用 --block-size=1 或直接 stat

数据来源与参考

  • man 1 ls(GNU coreutils 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌