菜鸟科技网

如何高效运行查找命令?

在文件系统中查找文件或目录

这是最常见的需求,不同操作系统有不同的命令。

如何高效运行查找命令?-图1
(图片来源网络,侵删)

Linux / macOS (使用 find 命令)

find 命令非常强大,可以在指定目录下递归查找文件。

基本语法: find [搜索路径] [匹配条件] [执行动作]

  • [搜索路径]:你想从哪个目录开始搜索。 表示当前目录, 表示根目录。
  • [匹配条件]:文件名、类型、大小、修改时间等。
  • [执行动作]:找到后做什么,默认是打印出路径。

常用示例:

示例 1:按文件名查找 在当前目录及其子目录下,查找所有名为 my_document.txt 的文件。

如何高效运行查找命令?-图2
(图片来源网络,侵删)
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 MB
    • 100M:正好 100 MB
    • 单位:k (KB), M (MB), G (GB)

示例 4:按修改时间查找 查找最近 7 天内修改过的文件。

find . -mtime -7
  • -mtime:按修改时间(天)查找。
    • -7:7 天以内
    • +7:超过 7 天
    • 7:正好 7 天

示例 5:组合查找条件 查找 .tmp 文件,并且大小超过 1GB。

如何高效运行查找命令?-图3
(图片来源网络,侵删)
find /tmp -name "*.tmp" -size +1G

Windows (使用 wheredir 命令)

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 (使用 pspgrep 命令)

示例 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 (使用 tasklisttaskkill 命令)

示例 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"

请告诉我您的具体需求(在哪个系统上?查找什么?),我可以给您更精确的命令。

分享:
扫描分享到社交APP
上一篇
下一篇