look 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
look——文本处理命令族(见文本处理与搜索命令族)。它的定位很窄但很爽:在已排序的文件里秒找"以某某开头"的行,比如翻系统词典。
look 在一个按字典序排好的文件里,找出所有以指定字符串开头的行。它利用了"已排序"这个前提做二分查找,所以比 grep 扫描全文件快得多。
一、基本用法
bash
look apple /usr/share/dict/words # 列出词典里所有以 apple 开头的词
look ap # 不指定文件时默认查系统词典
look -f Apple words.txt # -f 忽略大小写经典用法是查
/usr/share/dict/words(很多发行版需装words包才有)。给个前缀它就吐出所有以该前缀开头的行。注意前提:文件必须已排序,否则结果不全。
二、依赖"已排序"这一前提
bash
sort mylist.txt > mylist.sorted.txt
look "zhang" mylist.sorted.txt # 正确:文件已排序
look "zhang" mylist.txt # 危险:未排序,可能漏掉后面的匹配look 的快来自二分查找,而二分查找只在有序数据上正确。如果你的日志/名单没排序,look 会"看不到"排在后面的匹配项——这种场景老老实实用 grep。
三、look vs grep
| 维度 | look | grep |
|---|---|---|
| 前提 | 文件需已排序 | 无要求 |
| 匹配 | 仅"行首前缀" | 任意位置、支持正则 |
| 速度 | 二分,快 | 全扫,慢(大文件明显) |
简单说:要"在一个巨厚已排序名单里找所有姓张的",look 秒回;要"在任意文件里找包含某模式的行",用 grep。两者场景不同。
四、实战:查词表做自动补全参考
bash
# 写脚本时,用 look 快速判断某前缀下有哪些合法命令/单词
look "git" /usr/share/dict/words一句话总结
look = 在已排序文件里秒找"前缀开头"的行:靠二分查找极快,常用于翻系统词典;但文件必须预先 sort 过,否则会漏匹配。任意位置/正则匹配请用 grep。