当前位置: 首页 > news >正文

08_Linux文件查找技巧:locate、find 和 grep 命令详解

系列文章导航:01_Linux基础操作CentOS7学习笔记-CSDN博客

文章目录

    • 1. `locate`命令
    • 2. `grep`命令
    • 3. `find`命令


在Linux系统中,文件查找是一项常见的任务。本文将详细介绍三种强大的文件查找命令:locatefindgrep,以及它们的使用场景和参数。

1. locate命令

locate命令的功能是用于快速查找文件或目录。与find命令进行全局搜索不同,locate命令是基于了数据文件(/var/lib/mlocate/mlocate.db) 进行的定点查找,由于缩小了搜索范围,因此快速快很多。

​ Linux系统需定期执行下updatedb命令对数据库文件进行更新,然后再使用locate命令进行查找,这样才会更加准确。

优点:基于数据库查询,效率非常高
缺点:查询时要确保数据库是最新的,否则查找可能不正确

第一安装时,updatedb更新生成数据文件 /var/lib/mlocate/mlocate.db
/etc/cron.daily/mlocate.cron --根据任务计划每天刷新数据库 
注意:/tmp目录不做为updatedb数据库记录范围

安装与更新:

yum install -y mlocate
updatedb

语法格式:

locate [参数] 文件名

常用参数:

  • -b 仅匹配文件名
  • -c 不输出文件名
  • -d 设置数据库所在目录
  • -i 忽略大小写
  • -l 限制最大查找数量
  • -q 静默执行模式
  • -r 使用正则表达式
  • -S 显示数据库的统计信息
  • -w 匹配完整的文件路径
  • --help 显示帮助信息
  • --version 显示版本信息

示例:
搜索带有指定关键词的文件:

[root@lianghui ~]# updatedb
[root@lianghui ~]# locate network
/dev/network_latency
/dev/network_throughput
………………省略部分输出信息………………

在指定的目录下,搜索带有指定关键词的文件:

[root@lianghui ~]#  locate /etc/network
/etc/networks

locate “lesson” ----查找文件包含 lesson字符串的

# locate -r   'lessonoo.*'    ( -r参数支持用正则通配符)
# locate -r   "^/var/log"     ---   '^'  以xx开头  ,查找 以 /var/log开头的所有内容
# locate -r  '\.iso$'      找以'.iso'结尾的文件  在正则‘.’表示任意一个字符,‘\’ 转义为 普通的 '.' 字符

2. grep命令

grep命令用于搜索文件中的文本模式。它支持正则表达式,可以根据用户的需求灵活地进行搜索。与之容易混淆的是egrep命令和fgrep命令。如果把grep命令当作是标准搜索命令,那么egrep则是扩展搜索命令,等价于grep -E命令,支持扩展的正则表达式。而fgrep则是快速搜索命令,等价于grep -F命令,不支持正则表达式,直接按照字符串内容进行匹配。

语法格式:

grep [参数] 文件名

常用参数:

  • -b 显示匹配行距文件头部的偏移量
  • -c 只显示匹配的行数
  • -E 支持扩展正则表达式
  • -F 匹配固定字符串的内容
  • -h 搜索多文件时不显示文件名
  • -i 忽略关键词大小写
  • -l 只显示符合匹配条件的文件名
  • -n 显示所有匹配行及其行号
  • -o 显示匹配词距文件头部的偏移量
  • -q 静默执行模式
  • -r 递归搜索模式
  • -s 不显示没有匹配文本的错误信息
  • -v 反选,显示不包含匹配文本的所有行
  • -w 精准匹配整词
  • -x 精准匹配整行

示例:

grep "root" /etc/passwd                # 在passwd文件中过滤包含关键字"root"的行
grep -i "root" /etc/passwd             # 忽略大小写匹配关键字"root"
grep -n -i "root" /etc/passwd          # 忽略大小写匹配关键字"root"并显示行号
grep -v "root" /etc/passwd             # 反选,仅显示不包含关键字"root"的行
grep -v '^$' /etc/passwd               # 过滤空行
grep '^root' /etc/passwd               # 过滤以"root"开头的行
grep 'bash$' /etc/passwd               # 过滤以"bash"结尾的行
grep -w "^root" /etc/passwd            # 精确匹配以"root"开头的行
grep -vE "^#|^$" /etc/ssh/sshd_config  # 过滤掉以"#"开头或空行的内容
grep -Rl "pthread_create" /usr/include/  # 在/usr/include目录下查找包含"pthread_create"的文件
grep -Rn "hello" /usr/share/           # 在/usr/share目录下查找包含"hello"的文件,并显示行号

3. find命令

find命令用于在指定目录下查找文件和目录。它可以根据文件名、大小、类型、权限等多种条件进行查找。
优点:真实磁盘扫描查找,查找方式丰富,支持衔接其他指令对查找到内容进而做其他操作。
缺点:慢,效率低

语法:

find 查找的路径 -查找的方式(name size type perm user group newer)

常用查找方式:

  • name:按照文件名查找文件

    • find / -name "*.jpg":在根目录下查找以.jpg结尾的文件
    • find / ! -name "*.jpg":在根目录下查找不是以.jpg结尾的文件
    • find / -name "*.jpg" -o -name "*.gif":在根目录下查找以.jpg或.gif结尾的文件
    • find / -regex "ab[0-9]$":使用正则表达式匹配查找以ab开头后面跟一个数字结尾的文件
  • size:按照文件大小查找(常用单位c k M G)

    • find / -size 655k:在根目录下查找大小约为655k的文件
    • find / -size -655k:在根目录下查找小于655k的文件
    • find / -size +655k:在根目录下查找大于655k的文件
    • find / -size +655k -size -6550k:在根目录下查找大小大于655k但小于6550k的文件
  • user:按照文件属主来查找文件

    • find / -user it01
  • group:按照文件所属组来查找文件

    • find / -group itgrp
  • type:按照文件类型查找(f d l s p c b)

    • find /dev/ -type b:查找块设备文件
    • find /dev/ -type c:查找字符设备文件
    • find /tmp -type f:查找普通文件
    • find /tmp -type d:查找目录文件
  • perm:按照文件权限来查找文件

    • find / -perm 0700:查找权限等于0700的文件
    • find / -perm 01777:查找权限等于01777的文件,例如tmp目录
    • find / -perm u=rwx:查找用户权限为rwx的文件
    • find / -perm /u=r:查找用户权限包含’r’的文件,不管其他权限
    • find /usr/ -perm /u=s:查找用户包含s权限(冒险位的)的文件
  • newer file1:查找更改时间比文件file1新但比文件file2旧的文件

    • find /home/ -newer /home/a_f_8:查找比/home/a_f_8新的文件
    • find /home/ ! -newer /home/a_f_8:查找比/home/a_f_8老的文件
  • mtime/atime/ctime:根据时间查找

    • find / -mtime 7:查找文件修改时间为7天的文件(刚好等于7天)
    • find / -mtime -7:查找文件修改时间小于7天的文件
    • find / -mtime +7:查找文件修改时间大于7天的文件
    • find /home/ -mtime 0:查找今天修改的文件
  • -mount:指定只查找挂载的文件系统

    • find / -mount -size +10M

动作行为:

  • -ls:将查找的内容显示属性信息

    • find / -name "*.jpg" -ls:显示查找到的以.jpg结尾的文件的属性信息
    • find /home/ -empty -ls:在/home目录下查找空的普通文件,并执行ls显示属性的动作
  • -delete:删除查找到的文件

    • find /home/ -empty -delete:在/home目录下查找空的普通文件,并删除它们
  • -exec:执行命令

    • find /sbin -type f -size +1M -exec ls -lh {} \;:在/sbin目录中查找文件类型为常规文件并且文件大小大于1M,再使用ls命令来查看找到的文件的属性
    • find /sbin -type f -size +1M -exec cp {} /tmp \;:在/sbin目录中查找文件类型为常规文件并且文件大小大于1M,再使用cp命令将这些文件复制到/tmp目录下
  • -ok:执行命令,但依次询问

    • find /home/ -empty -ok mv {} / \;:在/home目录下查找空的普通文件,然后依次询问是否执行mv命令将它们移动到根目录下

示例:

find / -name "*.jpg"

通过这些命令,可以高效地在Linux系统中查找文件。无论是快速定位文件位置,还是深入搜索文件内容,这些工具一般都能满足需求。

相关文章:

08_Linux文件查找技巧:locate、find 和 grep 命令详解

系列文章导航:01_Linux基础操作CentOS7学习笔记-CSDN博客 文章目录 1. locate命令2. grep命令3. find命令 在Linux系统中,文件查找是一项常见的任务。本文将详细介绍三种强大的文件查找命令:locate、find 和 grep,以及它们的使用…...

JAVA 实验六

一: (1) 运行以上尟序并尣以上尟序尜尢一行尥码添加注解,将尟序保存尣e601.java (2) 以上尟序尣类变量是哪一个变量,类尠尞是哪一个尠尞,请找出类变量和类尠尞被使用尜语…...

电脑查不到IP地址是什么原因?怎么解决

在日常使用电脑的过程中,有时会遇到无法查询到电脑IP地址的情况,这可能会影响到网络的正常使用。本文将探讨电脑查不到IP地址的可能原因,并提供相应的解决方案。 一、原因分析 ‌网络连接问题‌:首先,网络连接不稳定或…...

Axure重要元件三——中继器修改数据

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:中继器修改数据 主要内容:显示编辑内容、表格赋值、修改数据 应用场景:更新行、表单数据行修改 案例展示: 正文…...

应用层——电子邮件、MIME、简单网络管理协议SNMP

电子邮件 电子邮件系统采用三个主要构件组成:用户代理、邮件服务器、电子邮件所需的协议 我们可以简单的认为邮件服务器中有很多邮箱,还有用来缓存再转发邮件的缓存,发送方使用用户代理通过邮件发送协议。例如SMTP将邮件发送给发送方。 邮件服…...

我与C语言二周目邂逅vlog——8.编译和链接

C语言中的编译和链接过程详细总结 1. 概述 C 语言是一种经典的系统级编程语言,其开发过程包括多个阶段,其中最关键的就是编译和链接过程。编译和链接的理解对于掌握 C 语言程序的构建至关重要。在本篇文章中,我们将深入讲解 C 语言的编译和…...

Views Page 视图页面

下图中显示的 Views 页面允许自定义网格级别及其相应的 View。 Views (视图) 页面包含两个主要部分: 关卡设计师;请注意,其他设计器页面为在关卡设计器中选择的 View 提供设置;Properties (属性) 窗口&…...

Win10 IDEA远程连接HBase

Win10 IDEA远程连接HBase Win10 IDEA连接虚拟机中的Hadoop(HDFS) 关闭Hadoop和Hbase 如果已经关闭不需要走这一步 cd /usr/local/hbase bin/stop-hbase.sh cd /usr/local/hadoop ./sbin/stop-dfs.sh获取虚拟机的ip 虚拟机终端输入 ip a关闭虚拟机…...

1.centos 镜像

centos 它有官网的下载地址:https://vault.centos.org/ 选择想要的版本,我选择 centos7.8 进入到镜像目录 isos 选择 x86_64 选择想要的版本,我选择 CentOS-7-x86_64-DVD-2003.iso 安装就正常安装就行。我选择虚拟机安装。这个参考&…...

electron 操作 cookie

前言:在 Electron 中操作 Cookie 可以使用electron模块提供的session对象来实现。 一、获取 Cookie 通过defaultSession获取默认会话对象,然后调用cookies.get方法并传入要获取 Cookie 的 URL 地址,以获取该 URL 对应的 Cookie。 const el…...

黑马软件测试第一篇_Linux

Linux 操作系统 说明: 所有硬件设备组装完成后的第⼀一层软件, 能够使⽤用户使⽤用硬件设备的软件 即为操作系统 常见分类 桌⾯面操作系统: Windows/macOS/Linux移动端操作系统: Android(安卓)/iOS(苹果)服务器器操作系统: Linux/Windows Server嵌⼊入式操作系统: Android(底…...

npm run dev 启动前端项目的原理

在一个使用 Vite 构建工具的 Vue 项目中,当你运行 npm run dev 时,实际执行的命令是 vite。为了理解这一过程,我们需要了解几个关键点: package.json 文件中的 scripts 字段: "scripts": {"dev": "vite&…...

【2024年SCI一区新算法:黑翅鸢优化算法 】分布式电网故障定位

1 场景介绍 使用10节点网络 2 故障设置 分为单重故障和两重故障 %% 2 故障设置 %% 1)单重故障 I[1,-1,0,0,-1,-1,0,0,-1,-1]; % 区段1故障 节点状态实际编码(是否流过故障电流) % I[1,1,0,0,-1,-1,0,0,-1,-1]; % 区段2故障 % I[…...

PyTorch 中 12 种张量操作详解

创作不易,还请各位同学三连点赞!!收藏!!转发!!! 对于刚入门学习Python还找不到方向的小伙伴可以试试我的这份学习方法和籽料,免费自取!! PyTorc…...

雷池WAF自动化实现安全运营实操案例终极篇

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...

微信小程序实现canvas电子签名

一、先看效果 小程序canvas电子签名 二、文档 微信小程序canvas 组件文档 微信小程序canvas API文档 H5Canvas文档 三、分析 1、初始话Canvas容器 2、Canvas触摸事件,bindtouchstart(手指触摸动作开始)、bindtouchmove(手指触摸…...

【SpringCloud】Seata微服务事务

Seata微服务事务 分布式事务问题:本地事务分布式事务演示分布式事务问题:示例1 分布式事务理论CAP定理一致性可用性分区容错矛盾 Base理论解决分布式事务的思路 初识SeataSeata的架构部署TC服务微服务集成Seata引入依赖配置TC地址 其他服务 动手实践XA模…...

重新阅读《马说》,感悟“伯乐相马”背后的被选择与选择的大智慧

“初闻不识曲中意,再听已是曲终人”。世有伯乐,然后有千里马。千里马常有,而伯乐不常有。无论你是考研考公等考试大军中的一员,还是已步入社会的打工人或者领导,当你面临被人选择或者选择人时,皆可从《马说…...

深入拆解TomcatJetty(三)

深入拆解Tomcat&Jetty(三) 专栏地址:https://time.geekbang.org/column/intro/100027701 1 Tomcat组件生命周期 Tomcat如何如何实现一键式启停 Tomcat 架构图和请求处理流程如图所示: 对组件之间的关系进行分析,…...

MySQL 实现简单的性能优化

一:硬件优化 更高的网络带宽:在处理大规模的远程请求时可以提高MySQL服务器的响应速度; 更大的内存空间:有助于缓存更多的数据库数据,减少磁盘I/O操作,提高整体性能; 换用企业级SSD&#xff1…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色&#xf…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

Spring Boot面试题精选汇总

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...

LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)

在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...