在文件系统中查找文件或目录
这是最常见的需求,不同操作系统有不同的命令。

Linux / macOS (使用 find 命令)
find 命令非常强大,可以在指定目录下递归查找文件。
基本语法:
find [搜索路径] [匹配条件] [执行动作]
[搜索路径]:你想从哪个目录开始搜索。 表示当前目录, 表示根目录。[匹配条件]:文件名、类型、大小、修改时间等。[执行动作]:找到后做什么,默认是打印出路径。
常用示例:
示例 1:按文件名查找
在当前目录及其子目录下,查找所有名为 my_document.txt 的文件。

find . -name "my_document.txt"
-name:表示按文件名精确匹配(区分大小写)。-iname:表示不区分大小写的匹配。
# 查找所有以 .log 结尾的文件(不区分大小写) find . -iname "*.log"
示例 2:按文件类型查找 查找当前目录下所有的目录。
find . -type d
-type:指定文件类型。f:普通文件d:目录l:符号链接
示例 3:按文件大小查找 查找大于 100MB 的文件。
find /var -type f -size +100M
-size:按大小查找。+100M:大于 100 MB-100M:小于 100 MB100M:正好 100 MB- 单位:
k(KB),M(MB),G(GB)
示例 4:按修改时间查找 查找最近 7 天内修改过的文件。
find . -mtime -7
-mtime:按修改时间(天)查找。-7:7 天以内+7:超过 7 天7:正好 7 天
示例 5:组合查找条件
查找 .tmp 文件,并且大小超过 1GB。

find /tmp -name "*.tmp" -size +1G
Windows (使用 where 和 dir 命令)
Windows 命令行查找文件功能相对 find 来说弱一些,通常结合 dir 命令使用。
示例 1:使用 dir 命令查找
在当前目录下查找所有名为 report.docx 的文件。
dir /s /b "report.docx"
/s:递归搜索所有子目录。/b:使用 bare 格式(只显示路径,不显示其他信息)。
示例 2:使用 where 命令查找
where 命令主要用于查找可执行文件(.exe, .bat 等)在系统中的位置。
where notepad.exe
这会显示 notepad.exe 在系统 PATH 环境变量中所有被找到的位置。
中查找字符串
这是程序员和系统管理员最常用的操作之一。
Linux / macOS (使用 grep 命令)
grep (Global Regular Expression Print) 是一个强大的文本搜索工具。
基本语法:
grep [选项] "搜索字符串" [文件或目录路径]
常用示例:
示例 1:在单个文件中查找
在 error.log 文件中查找所有包含 "error" 的行。
grep "error" error.log
示例 2:在多个文件中递归查找
在当前目录及其所有子目录的所有 .log 文件中查找 "warning"。
grep -r "warning" . # 或者 grep -r "warning" --include="*.log" .
-r或-R:递归搜索。-i:忽略大小写。--include="*.log":只搜索扩展名为.log的文件。--exclude-dir="temp":排除名为temp的目录。
示例 3:显示匹配行的行号
grep -n "192.168.1.1" access.log
-n:显示匹配行的行号。
示例 4:使用正则表达式 查找所有包含 "error" 后面跟着一个数字的行。
grep -E "error[0-9]" error.log
-E:启用扩展正则表达式。
Windows (使用 findstr 命令)
Windows 的 findstr 命令是 grep 的对应版本。
基本语法:
findstr [选项] "搜索字符串" [文件路径]
常用示例:
示例 1:在单个文件中查找
在 info.txt 中查找 "info"。
findstr "info" info.txt
示例 2:递归查找
在 C:\logs 目录及其子目录的所有文件中查找 "debug"。
findstr /s /i "debug" C:\logs\*
/s:递归搜索。/i:忽略大小写。/c:"字符串":搜索包含精确字符串的行(如果字符串中有空格,必须用此选项)。/n:显示行号。
查找正在运行的进程
Linux / macOS (使用 ps 和 pgrep 命令)
示例 1:使用 ps 命令查找
查找所有包含 "nginx" 关键字的进程。
ps aux | grep nginx
ps aux:列出所有正在运行的进程的详细信息。- (管道):将
ps命令的输出作为grep命令的输入。 grep nginx:在进程列表中过滤出包含 "nginx" 的行。
示例 2:使用 pgrep 命令(更简洁)
直接查找进程名为 "nginx" 的进程 ID (PID)。
pgrep nginx
-l:显示进程名而不仅仅是 PID。pgrep -l nginx
Windows (使用 tasklist 和 taskkill 命令)
示例 1:使用 tasklist 命令查找
查找所有包含 "chrome" 关键字的进程。
tasklist | findstr "chrome"
tasklist:列出所有正在运行的进程。findstr:在进程列表中过滤。
示例 2:使用 taskkill 命令终止进程
如果你知道进程的名称或 PID,可以直接终止它。
# 通过进程名终止 taskkill /f /im chrome.exe # 通过 PID 终止 taskkill /f /pid 12345
/f:强制终止,即使程序没有响应。/im:指定进程映像名称(即进程名)。/pid:指定进程 ID。
总结与速查表
| 场景 | 操作系统 | 命令 | 示例 |
|---|---|---|---|
| 查找文件 | Linux/macOS | find |
find . -name "*.txt" |
| Windows | dir |
dir /s /b "report.docx" |
|
| Linux/macOS | grep |
grep -r "error" /var/log |
|
| Windows | findstr |
findstr /s /i "warning" C:\logs |
|
| 查找进程 | Linux/macOS | ps / pgrep |
ps aux \| grep nginx |
| Windows | tasklist / taskkill |
tasklist \| findstr "chrome" |
请告诉我您的具体需求(在哪个系统上?查找什么?),我可以给您更精确的命令。
