跳转至

三、找东西

第 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 '租金' 账本.txt            # 在账本里找「租金」
grep -r '关键词' 目录/         # 连子目录一起搜(recursive)

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 这个东西,后来我在很多地方又见到它(比如查进程、筛日志),几乎无处不在。