掌握 ls 命令:从入门到进阶技巧,一篇搞定
(小白友好 + 实操导向 + 高频组合)
ls 是 Linux 里使用频率最高的命令之一,但很多人只用过 ls、ls -l、ls -a,其实它能玩出很多花样,能极大提升你查看目录的效率。
一、先记住这 8 个最常用的“黄金组合”(背下来就能用 80% 场景)
| 排序 | 命令 | 作用(一句话描述) | 什么场景最常用 |
|---|---|---|---|
| 1 | ls -lah | 详细列表 + 显示隐藏文件 + 人类可读大小 | 随便进一个目录先敲这个最舒服 |
| 2 | ls -lhtr | 按修改时间倒序(最新文件在最下面)+人类大小 | 看日志、看哪个文件最近被改过 |
| 3 | ls -lS | 按文件大小降序排序 | 找大文件、查占空间的家伙 |
| 4 | ls -lShr | 按文件大小升序(最小文件在最下面) | 找零散小文件、清理垃圾 |
| 5 | ls -1 | 每行只显示一个文件名(单列) | 配合管道 |
| 6 | ls -A | 显示几乎所有隐藏文件(但不显示 . 和 ..) | 比 -a 干净一点 |
| 7 | ls -F | 在文件名后加类型符号(/=@* 等) | 快速区分文件/目录/可执行/链接 |
| 8 | ls -R | 递归列出所有子目录内容 | 粗略看整个项目结构(小心层级深) |
二、核心选项速查表(高频 → 低频)
| 选项 | 全写 | 作用 | 记住口诀 |
|---|---|---|---|
| -a | –all | 显示所有文件(包括 .开头的隐藏文件) | all |
| -A | –almost-all | 显示隐藏文件,但不显示 . 和 .. | 几乎全部(更干净) |
| -l | –long | 长格式(权限、所有者、大小、时间等) | long / list |
| -h | –human-readable | 文件大小显示 K/M/G(需配合 -l) | human |
| -t | –sort=time | 按修改时间排序(最新在上) | time |
| -r | –reverse | 反向排序(常跟 -t 或 -S 一起用) | reverse |
| -S | –sort=size | 按文件大小排序(大→小) | Size |
| -X | –sort=extension | 按后缀名排序 | eXtension |
| -v | –sort=version | 自然版本排序(1.10 在 1.2 后面) | version(数字更聪明) |
| -F | –classify | 加分类符号:/目录 *可执行 @链接 | File type mark |
| -i | –inode | 显示每个文件的 inode 号 | inode(查硬链接用) |
| -R | –recursive | 递归显示子目录 | Recursive |
| –color=auto | (默认大多数发行版开启) | 类型不同颜色高亮 | 美观 + 快速辨识 |
| -1 | –format=single-column | 强制单列输出 | 方便复制/管道 |
| -d | –directory | 只显示目录本身信息,不显示里面内容 | 只看这个文件夹本身 |
三、真正能提高效率的“骚操作”组合(实测高频)
- 看最近改的文件(日志/调试神器)
ls -lhtr # 最新在最下面,眼睛往下扫最舒服
ls -lht # 最新在最上面(有些人喜欢)
- 快速找最大的几个文件
ls -lSh | head -n 10 # 前10个最大的
ls -lShr | head -n 10 # 最小的10个
- 只看最近1分钟内改过的文件(热文件监控)
ls -lht --time-style=full-iso | grep "2026-01-30 18:" # 改成你当前时间段
- 列出所有 .log 文件并按时间排序
ls -lht *.log
- 递归看目录树(轻量版 tree 命令)
ls -R # 所有层级
ls -lR | grep "^d" # 只看目录层级
- 一键打开/编辑最新文件(超级实用!)
vim $(ls -t | head -1) # 编辑最新文件
cat $(ls -t | head -1) # 查看最新文件内容
less $(ls -tr | head -1) # 查看最早的文件(常用于日志)
- 区分文件类型不看颜色(纯符号版)
ls -F
# 示例输出:
# script* data/ link@ image.png
- 管道 + ls 的经典玩法
ls -1 | wc -l # 当前目录有多少文件
ls -S | head -1 # 最大的文件叫什么
ls *.jpg | xargs -I {} mv {} /backup/ # 批量移动
四、一个小彩蛋:几乎没人知道的几个冷门但有意思的选项
ls --group-directories-first→ 目录排在文件前面(很舒服的阅读顺序)ls -v→ 数字自然排序(file1 file2 file10 而不是 file1 file10 file2)ls -Q→ 文件名全部加双引号(适合脚本处理怪文件名)ls --hide='*.bak'→ 隐藏某些文件(不显示 .bak 结尾的)
最后总结一句口诀(背下来终生受益)
“ls 看目录,先 -lah 打底;找新文件 -htr;找大文件 -Shr;批量处理 -1”
熟练掌握上面这些,日常运维/开发/排查问题时,查看目录的速度和准确度能提升 3–5 倍。
你平时最常敲的 ls 组合是哪个?或者你还有什么 ls 没解决的痛点?可以继续问~ 😄