【Linux】命令行下的增删查改之“查找“

server/2024/10/18 16:55:07/

根据路径和条件搜索指定文件(find)

find 命令是 Linux 系统中一个极为重要和强大的工具,用于在目录树中递归查找文件和目录,能够根据多个条件进行筛选。

它适用于进行系统维护、文件管理和日志分析时文件的搜寻,既然其查找方式递归且从根目录开始,所以其系统资源消耗相对其他查找命令大一些;

使用 find 的时候,注意输出可能会非常庞大,尤其是在搜索全系统时,此时可以用 -print 选项将结果输出到文件中,减轻终端压力;

此外确保有权限访问你所指定的目录,如果没有适当的权限,命令可能会输出错误信息。

find [路径] [参数]

参数:

-name

匹配名称

-perm

匹配权限(mode为完全匹配,-mode为包含即可)

-user

匹配所有者

-group

匹配所有组

-mtime -n +n

匹配修改内容的时间(-n指n天以内,+n指n天以前)

-atime -n +n

匹配访问文件的时间(-n指n天以内,+n指n天以前)

-ctime -n +n

匹配修改文件权限的时间(-n指n天以内,+n指n天以前)

-nouser

匹配无所有者的文件

-nogroup

匹配无所有组的文件

-newer f1 !f2

匹配比文件f1新但比f2旧的文件

-type b/d/c/p/l/f

匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件)

-size

匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)

-prune

忽略某个目录

-exec …… {}\;

后面可跟用于进一步处理搜索结果的命令

实例:

  • 查找特定日期的文件:使用 -type f -mtime

查找过去 30 天内修改过的文件

find /path/to/directory -type f -mtime -30

  • 查找并删除特定类型的文件:使用-delete

慎用删除!

慎用删除!

慎用删除!

find /tmp -name "*.tmp" -delete

  • 在/etc目录中搜索所有大约1M大小的文件:
find /etc -size +1M 
  • 在/home目录中搜索所有属于指定用户的文件:
find /home -user username
  • 全盘搜索系统中所有类型为目录,且权限为1777的目录文件:
find / -type d -perm 1777

查找命令文件(which)

用于查找命令文件,仅仅查看所在路径,不需要其他任何其他信息,那么这将会是最好的选择。

which [参数] 文件

参数:

-n

指定文件名长度(不含路径)

-p

指定文件名长度(含路径)

-w 

指定输出时栏位的宽度

-V

显示版本信息

实例:

  • 查找某个指定命令文件所在位置:
which reboot

显示命令及相关文件的路径(whereis)

whereis 命令是一个用于定位二进制文件、源代码文件和手册页的 Linux 命令。

它与 find 命令和 locate 命令相比更快,因为它使用预先构建的数据库查找文件,通常只会在系统的特定目录中查找(如 /usr/bin、/usr/local/bin 和手册页目录)。

搜索范围是有限的: whereis 主要针对可执行文件、源代码和手册页的查找,不适合查找其他类型的文件。它只会在系统默认的路径中查找,而不会递归地搜索子目录。

输出信息简洁: whereis 的输出包含找到的二进制文件、源代码以及手册页的路径,通常只返回相关信息,不会输出大量无用信息。

whereis [参数] [命令名]

参数:

-b

查找二进制程序或命令

-B

从指定目录下 查找二进制程序或命令

-m

查找man手册文件

-M

从指定目录下 查找man手册文件

-s

只查找源代码文件

-S

从指定目录下 查找源代码文件

实例:

  • 显示ln命令的程序和man手册页的位置:
whereis ln

文本搜索工具(grep)

grep 是一个在 Unix 和类 Unix 系统中使用的命令行工具,用于搜索文本文件中匹配特定模式的行。它的名字来自“global regular expression print”的缩写,意为用于全面搜索的正则表达式。

对于大文件的搜索效率非常高,所以在非常大的文件上使用复杂正则匹配时应谨慎,因为那样做可能会影响性能。且支持多种选项和正则表达式,用户可以根据需求进行复杂的搜索。输出格式化便捷,提高使用者的查找效率。 但其仅能用于搜索和匹配,无法修改文本内容;要进行修改需要配合其他工具(如 sed 或 awk)。

默认情况下,grep 是区分大小写的。使用 -i 选项可以忽略大小写。在指定文件时,路径如果不正确会导致找不到文件或结果为空。当使用管道将其他命令的输出传递给 grep 时,需确保管道前的命令成功执行。如果同时使用输入流和文件,确保理解优先处理的是哪个。

grep [参数] 文件

参数:

-i

忽略大小写

-c

只输出匹配行的数量

-l

只列出符合匹配的文件名,不列出具体的匹配行

-n

列出所有的匹配行,显示行号

-h

查询多文件时不显示文件名

-s

不显示不存在、没有匹配文本的错误信息

-v

显示不包含匹配文本的所有行

-w

匹配整词

-x

匹配整行

-r

递归搜索

-q

禁止输出任何结果,已退出状态表示搜索是否成功

-b

打印匹配行距文件头部的偏移量,以字节为单位

-o

与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位

-F

匹配固定字符串的内容

-E

支持扩展的正则表达式

实例:

  • 搜索某个文件中,包含某个关键词的内容:
grep root /etc/passwd

  • 搜索某个文件中,以某个关键词开头的内容:
grep ^root /etc/passwd


http://www.ppmy.cn/server/132016.html

相关文章

金融市场中的量化交易与算法优化分析

量化交易在现代金融市场中扮演着越来越重要的角色,通过数学模型和算法的分析,量化交易能够帮助投资者在复杂的市场环境中做出高效的投资决策。本文将探讨量化交易的基本原理、常见策略以及如何通过算法优化提高交易效果。 #### 一、量化交易的基本概念 …

動態IP和端口詳解

IP地址是分配給每臺連接到互聯網的設備的唯一識別字,幫助網路中的設備進行互相識別和通信。IP地址有兩種類型:IPv4和IPv6。IPv4是由四組數字組成,例如192.168.1.1,而IPv6則是更長的形式,旨在解決IPv4地址耗盡的問題。 …

Kubernetes API

Kubernetes API 使你可以查询和操纵 Kubernetes 中对象的状态。 Kubernetes 控制平面的核心是 API 服务器和它暴露的 HTTP API。 用户、集群的不同部分以及外部组件都通过 API 服务器相互通信。 Kubernetes 控制面的核心是 API 服务器。 API 服务器负责提供 HTTP API&#xff…

9个微服务最佳实践

1⃣分离数据存储:独立数据库,提升灵活性。 2⃣代码成熟度一致:质量稳定,避免技术债务 3⃣独立构建流程:独自构建,快速部署。 4⃣单一职责原则:业务功能单一,简化维护。 5⃣容器化部署…

距离真正的自动驾驶落地还有多远?

摘要 随着人工智能、大数据及物联网技术的迅猛发展,自动驾驶技术正逐步从理论探讨走向实际应用,成为智能交通领域的热点话题。本文深入剖析了自动驾驶技术的当前发展状况,包括其技术原理、发展历程、面临的技术与法规挑战,并展望…

Unity客户端HR面面经

做一下自我介绍 面试官,您好!我是口口口口口口口口,来应聘我们口口的U3D开发岗。我自己是一个对游戏开发本身非常感兴趣的开发者,在校期间参加过很多校园开发比赛和企业办的开发活动,也拿过口口口奖和口口口口大赛奖&…

如何选则合适的图存储方式?

在选择合适的图存储方式时,需要考虑多个因素,包括图的类型、规模、操作需求以及性能要求等。以下是一些帮助你做出选择的要点: 一、了解不同图存储方式的特点 (一)邻接矩阵 存储结构:用二维数组表示图,数组的行和列分别对应图中的顶点。如果顶点 i 和顶点 j 之间有边相…

Nacos 2.2.x版本配置详解(鉴权版本)

Nacos 2.2.x 一、安装和鉴权二、项目中配置集成1.位置问题2.namespace命名空间3.username和password4.group5.file-extension6.prefix7.shared-configs 三、实战1.新建一个命名空间,取名wq-config(这个你随意),会随机生成一个命名…