三、找东西
第 5 课 · 2026-08-22
文件多了以后,靠 ls 一层层翻是不现实的。这一课学的是搜。
两个方向的搜
| 命令 | 搜什么 | 常用写法 |
|---|---|---|
find |
按文件名找 | find . -name '*.xlsx' |
grep |
按文件内容找 | grep '租金' 账本.txt |
这个区分很重要:
find是「我知道它叫什么,但不知道放哪了」grep是「我不知道哪份文件有这句话,帮我在所有文件里翻」
find:按名字找
find . -name '*.xlsx' # 当前目录下所有 Excel 表格
find . -name '*.tar.gz' # 所有压缩备份包
find ~ -name "租金库.db" # 从家目录开始全盘找
- 那个
.是从哪开始找(.= 当前位置) -name后面可以配通配符*
这一课之后,我找文件再也不一层层点目录了。
grep:按内容找
grep -r 特别实用:在一整个文件夹里搜一句话在哪些文件出现过——就像在档案柜里翻「哪几份材料提到了这个名字」。
管道:把两个命令接起来
ls | grep 账本 # 列出所有文件,再从中筛出名字带「账本」的
cat 账本.txt | head -5 # 打印整个文件,但只取前 5 行
ps aux | grep nginx # 列出所有进程,再从中筛出 nginx
| 这个符号叫管道,作用是:把左边命令的输出,当作右边命令的输入。
比喻:左边的人把材料递给右边的人,右边的人接着加工。
它让每个命令只干好一件事,然后拼起来干复杂的事——这是 Linux 里最重要的思路之一。
排错时怎么用(真实场景)
「网站打不开了」——按这个顺序查:
systemctl status nginx # 1. 这岗位是死是活
tail -20 /var/log/nginx/error.log # 2. 看报错
grep -r '关键词' /var/log/nginx/ # 3. 在日志里搜特定线索
三条命令下去,基本能定位是服务挂了、还是哪个请求出的错。
动手做过的事
- 在 finance 目录里用
find找出所有.xlsx文件 - 用
grep在一份账本里搜金额关键词 - 用
ls | grep从一堆文件里筛出想要的那个
这一课的感受
学会管道之后,我对「命令」的理解变了一个层次——它们不是一个个孤立的工具,而是能拼装的零件。
而且 grep 这个东西,后来我在很多地方又见到它(比如查进程、筛日志),几乎无处不在。