艾林博客 - 技术交流与经验分享的个人博客

Linux查找命令详解大全

Liner51

Liner51

5个月前更新

Linux系统中,查找是日常操作的一部分。在海量的文件、目录、端口和进程中找到我们需要的信息,是每个Linux使用者必备的技能。在本文中,我们将详解Linux下各种查找命令,涵盖查找文件内容、文件名、目录、端口和进程等。

1. find命令

在Linux系统中,find命令是一个极其强大的工具,用于在文件系统中搜索和定位文件和目录。它可以根据多种条件进行搜索,如文件名、类型、大小、权限、所有者等。

基本用法

find [path] [expression]

常用参数

参数名 参数解释 示例 示例解释
-name 按文件名搜索 find / -name "*.sh" 查找根目录下所有扩展名为.sh的文件
-type 根据类型搜索 find /home -type d 查找/home目录下所有的目录
-size 按文件大小搜索 find / -size +2M 查找根目录下所有大于2MB的文件
-mtime 根据文件的修改时间搜索 find / -mtime -10 查找根目录下过去10天内修改过的文件
-user 按文件属主搜索 find /home -user joe 查找/home目录下所有属于用户joe的文件
-perm 按文件权限搜索 find / -perm 644 查找根目录下所有权限为644的文件
-exec 对匹配的文件执行指定的命令 find /tmp -type f -exec rm {} \; 查找/tmp目录下所有文件并删除它们
-maxdepth 限制搜索深度 find / -maxdepth 2 -name "*.log" 查找根目录及其直接子目录下所有扩展名为.log的文件
示例1:查找特定名称的文件

查找当前目录及其子目录中名为 example.txt 的文件:

find . -name "example.txt"
示例2:查找特定后缀的文件

查找当前目录及其子目录中所有以 .log 结尾的文件:

find . -name "*.log"
示例3:查找特定名称的目录

/www/wwwroot 目录及其子目录中查找名字以 Service 结尾的所有目录:

find /www/wwwroot -type d -name '*Service'

2. 查找文件内容:grep命令

grep 是 Linux 和 Unix 系统中非常强大的命令行工具,用于搜索文本中的特定模式。它的名称来源于 "global regular expression print",意思是打印匹配全局正则表达式的行。

基本用法

grep [options] pattern [files]

常用参数

参数名 参数解释 示例 示例解释
-i 忽略大小写地进行匹配 grep -i "example" file.txt 在file.txt中不区分大小写地搜索"example"
-v 反向匹配,仅显示不匹配的行 grep -v "error" server.log 显示server.log中不包含"error"的所有行
-r 递归查找 grep -r "config" /etc/ 递归搜索/etc/目录下所有包含"config"文字的文件
-n 显示匹配的行号 grep -n "main()" main.c 在main.c中搜索"main()"并显示行号
-c 统计文件中包含匹配文本的次数 grep -c "localhost" /etc/hosts 统计/etc/hosts中"localhost"出现的次数
-l 只显示包含匹配文本的文件名 grep -l "root" /etc/* 列出/etc目录下所有包含文字"root"的文件名
-A 显示匹配行和之后的行(after) grep -A 3 "section" config.ini 在config.ini中找到"section"并显示该行及后3行
-B 显示匹配行和之前的行(before) grep -B 2 "chapter" book.txt 在book.txt中找到"chapter"并显示该行及前2行
示例1:在文件中查找特定字符串

在文件 example.txt 中查找包含字符串 hello 的行:

grep "hello" example.txt
示例2:递归查找目录中的特定字符串

在当前目录及其子目录中的所有文件中查找包含字符串 error 的行:

grep -r "error" .
示例3:显示行号

在文件 example.txt 中查找包含字符串 hello 的行,并显示行号:

grep -n "hello" example.txt
示例4:递归查找并仅列出文件名

/www/wwwroot 目录及其子目录中的文件中查找包含字符串 response 的行,并仅列出包含该字符串的文件名:

grep -rl "response" /www/wwwroot

3. 查找端口:netstat命令

netstat 是 Linux 和其他类 Unix 系统上的一个命令行工具,用于显示网络连接、路由表、接口统计等网络相关信息。

基本用法

netstat [options]

常用参数

参数名 参数解释 示例 示例解释
-a 显示所有连接和监听端口 netstat -a 显示所有活动的和监听的套接字
-t 仅显示TCP连接 netstat -t 显示所有TCP连接
-u 仅显示UDP连接 netstat -u 显示所有UDP连接
-n 显示网络地址和端口号而非名称 netstat -n 使用数字地址和端口号显示网络连接而非解析名称
-p 显示与每个连接相关的程序PID和名称 netstat -p 显示每个连接的进程名和进程ID
-l 仅显示监听端口 netstat -l 显示所有服务器监听的套接字
示例1:显示所有连接和监听端口
netstat -a
示例2:显示所有TCP连接
netstat -t
示例3:查找特定端口(如端口80)的使用情况
netstat -an | grep ':80'
其他示例:查找特定端口的使用情况并显示进程信息
sudo netstat -anp | grep ':80'

替代工具

近年来,ss 工具已经在很多 Linux 发行版中逐渐取代了 netstat,因为它提供了更多的功能并且性能更好。ss 命令的语法和选项与 netstat 相似,但有些不同:

  1. 显示所有TCP连接
ss -t
  1. 显示所有UDP连接
ss -u
  1. 显示所有监听的TCP和UDP端口
ss -ltu
  1. 显示所有连接及其进程信息
sudo ss -p

4. 查找进程:ps命令

ps命令用于显示当前系统的进程状态。

基本用法

ps [options]

常用参数

参数名 参数解释 示例 示例解释
-e 显示所有进程 ps -e 显示系统上当前所有的进程
-f 显示完整格式 ps -f 显示进程的详细信息
-u 显示指定用户的进程 ps -u root 显示所有root用户的进程
-aux 显示所有进程的详细信息 ps aux 显示系统上所有进程的详细信息
-C 通过命令名选择进程 ps -C nginx 显示所有名为nginx的进程
示例1:显示当前的进程列表
ps

这个命令显示当前终端会话中运行的进程。

示例2:显示所有用户的所有进程
ps aux

这个命令显示所有用户的所有进程,包括详细的进程信息。选项解释:

  • a:显示所有用户的进程。
  • u:以用户格式显示。
  • x:显示没有控制终端的进程。
示例3:以树状结构显示进程
ps -ef --forest

这个命令以树状结构显示进程及其子进程。选项解释:

  • -e:显示所有进程。
  • -f:以完整格式显示。
  • --forest:以树状结构显示进程关系。

5. 查找命令位置:whereis命令

whereis 命令用于查找某个命令的二进制文件、源代码文件和手册页的位置。它可以快速显示与指定命令相关的各种文件路径。

基本用法

whereis [options] command

常用参数

参数名 参数解释 示例 示例解释
-b 只查找二进制文件 whereis -b ls 查找命令 ls 的二进制文件
-m 只查找手册页 whereis -m ls 查找命令 ls 的手册页
-s 只查找源代码文件 whereis -s ls 查找命令 ls 的源代码文件
-u 查找不常见位置的文件 whereis -u ls 查找命令 ls 的不常见位置的文件
-B path 指定查找二进制文件的路径 whereis -B /usr/bin ls /usr/bin 目录中查找命令 ls 的二进制文件
-M path 指定查找手册页的路径 whereis -M /usr/man ls /usr/man 目录中查找命令 ls 的手册页
-S path 指定查找源代码文件的路径 whereis -S /usr/src ls /usr/src 目录中查找命令 ls 的源代码文件
示例1:查找命令的所有相关文件

查找命令 ls 的二进制文件、源代码文件和手册页:

whereis ls

这个命令会显示与 ls 命令相关的二进制文件、源代码文件和手册页的路径。

示例2:只查找命令的二进制文件

只查找命令 cp 的二进制文件:

whereis -b cp

这个命令使用 -b 参数,只显示 cp 命令的二进制文件路径。

示例3:只查找命令的手册页

只查找命令 grep 的手册页:

whereis -m grep

这个命令使用 -m 参数,只显示 grep 命令的手册页路径。

Linux系统中有多种强大的查找命令,可以帮助我们在复杂的环境中快速定位所需的信息。熟练使用这些命令,将大大提高我们的工作效率。希望本文章能够帮到您

The End
系统运维

喜欢就支持一下把!

(0)
古往今来,能成就事业,对人类有作为的,无一不是脚踏实地攀登的结果。

钱三强

为您推荐