linux 查找文件或查找内容 (find grep)

一 linux 查找包含指定内容的文件:

在linux 有时我们只我知道内容但不知道文件在哪,可以使用find 与grep查找

  例1 要查找指定目录(默认包含子目录)文件内容包含 xxx 的文件

find /etc/ -type f -exec grep -l "mysql" {} +

  指令详细说明:

  • find .: 在当前目录及其子目录中查找文件。
  • -type f: 仅匹配文件,而不是目录。
  • -exec grep -l "mysql" {} +: 对于找到的每个文件,执行grep -l "mysql"命令。-l选项表示只输出包含匹配项的文件名,而不是显示匹配的具体内容。
  • -exec:这个选项告诉 find 命令,在找到的文件上执行指定的命令。
  • grep:这是要执行的命令,即查找文件内容的命令。
  • {}:这是一个占位符,它表示 find 命令找到的每个文件名。当 -exec 选项与 {} 结合使用时,{} 将被替换为实际的文件名。
  • +:这个符号告诉 find 命令,在一次执行中处理尽可能多的文件。这意味着 find 将尽可能多地将文件名传递给命令。相比之下,-exec 选项的另一种用法是使用 ;(分号),它表示对于每个找到的文件都会执行一次命令,这可能会导致多次执行相同的命令,因此效率较低。

 

  执行后找到所有包含mysql 内容的文件 

 从结果上看文件有点多,我们可以排除不找子目录只需加 -maxdepth 1 参数:

find /etc/ -type f -maxdepth 1 -exec grep -l "mysql" {} +

查找排除查找子目录,如下图: 

 

二 资料扩展:

1 find 命令详解

find 命令用于在目录结构中查找文件或目录。find 命令可以根据文件名、文件类型、文件权限、文件大小、文件修改时间等条件进行查找。

find 命令的基本格式如下:

find [options] path [expression]

options 指定 find 命令的选项,可以指定查找范围、查找条件等。

path 指定查找的路径。

expression 指定查找条件,可以根据文件名、文件类型、文件权限、文件大小、文件修改时间等条件进行查找。

options 选项的详细说明如下:

  • -name:根据文件名进行查找。
  • -type:根据文件类型进行查找。
  • -perm:根据文件权限进行查找。
  • -size:根据文件大小进行查找。
  • -mtime:根据文件修改时间进行查找。
  • -ctime:根据文件创建时间进行查找。
  • -uid:根据文件所有者 ID 进行查找。
  • -gid:根据文件组 ID 进行查找。
  • -user:根据文件所有者进行查找。
  • -group:根据文件组进行查找。
  • -newer:查找比指定文件更新的文件。
  • -newermt:查找比指定文件更新的文件,指定文件修改时间的绝对时间戳。
  • -newerc:查找比指定文件更新的文件,指定文件创建时间的绝对时间戳。
  • -exec:对查找到的文件执行指定的 shell 命令。
  • -ok:与 -exec 相同,但在执行 shell 命令之前会询问用户是否确认。
  • -depth:指定查找的深度。
  • -follow:跟随符号链接。
  • -prune:跳过指定目录。
  • -or:指定多个查找条件,满足任一条件的文件都将被查找到。
  • -and:指定多个查找条件,必须满足所有条件的文件才会被查找到。

expression 表达式的详细说明如下:

  • *****:匹配所有文件。
  • ?:匹配任意一个字符。
  • [seq]:匹配指定范围内的字符。
  • !:取反操作。

例如,以下命令将查找当前目录下所有以 .txt 结尾的文件:

find . -name "*.txt"

以下命令将查找当前目录下所有属于用户 root 的文件:

find . -user root

以下命令将查找当前目录下所有创建时间在 2 天前的文件:

find . -mtime -2

以下命令将查找当前目录下所有大小在 100 KB 到 1 MB 之间的文件:

find . -size +100k -size -1m

以下命令将对查找到的文件执行 cat 命令,将文件内容输出到屏幕:

find . -name "*.txt" -exec cat {} \;

以下命令将对查找到的文件执行 rm 命令,将文件删除:

find . -name "*.txt" -exec rm {} \;

find 命令提供了非常强大的查找功能,可以根据各种条件进行查找。在实际使用中,可以根据需要灵活组合 find 命令的选项和表达式,实现各种复杂的查找需求。

2 grep命令详解

grep 命令用于在文件中查找指定的字符串或正则表达式。grep 命令的基本格式如下:

grep [options] pattern [files]

options 指定 grep 命令的选项,可以指定查找范围、查找条件等。

pattern 指定查找的字符串或正则表达式。

files 指定要查找的文件。

options 选项的详细说明如下:

  • -n:显示行号。
  • -c:显示匹配行数。
  • -i:忽略大小写。
  • -f:指定匹配模式的文件。
  • -v:反向查找,只显示不匹配的行。
  • -r:递归查找子目录中的文件。
  • -l:只显示匹配的文件名。

pattern 表达式的详细说明如下:

  • *****:匹配所有字符。
  • ?:匹配任意一个字符。
  • [seq]:匹配指定范围内的字符。
  • ^:匹配行的开始。
  • $:匹配行的结束。
  • |:或操作。
  • &:与操作。

例如,以下命令将查找当前目录下所有包含字符串 "hello" 的行:

grep "hello" .

以下命令将查找当前目录下所有包含字符串 "hello" 的行,并显示行号:

grep -n "hello" .

以下命令将查找当前目录下所有包含字符串 "hello" 的行,忽略大小写:

grep -i "hello" .

以下命令将查找当前目录下所有包含字符串 "hello" 的行,匹配模式来自文件 pattern.txt

grep -f pattern.txt .

以下命令将查找当前目录下所有以 .txt 结尾的文件,并显示包含字符串 "hello" 的行:

grep "hello" *.txt

以下命令将查找当前目录下所有以 .txt 结尾的文件,并显示包含字符串 "hello" 的行,忽略大小写:

grep -i "hello" *.txt

grep 命令提供了非常强大的查找功能,可以根据各种条件进行查找。在实际使用中,可以根据需要灵活组合 grep 命令的选项和表达式,实现各种复杂的查找需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/348969.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通过一个 Spring 的 HelloWorld 引入 Spring 要点

目录 一. 前言 二. 设计一个 Spring 的 HelloWorld 2.1. 创建 HelloWorld 项目 2.2. 核心要点一:控制反转(IOC) 2.3. 核心要点二:面向切面(AOP) 三. Spring 框架如何逐步简化开发 3.1. Java 配置方式…

接入技术以及互联网架构

1. 接入技术 1.1 两种物理基础设施:有线和无线基础设施 有线基础设施包括铜线和光纤电缆。铜线和光纤是用来传输数据的物理介质,其中光纤以其高速度和大容量而闻名,而铜线则是一种更传统的技术。 无线基础设施则包括高点(如专门建…

时序分解 | MATLAB实现CEEMDAN+SE自适应经验模态分解+样本熵计算

时序分解 | MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算 目录 时序分解 | MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算 包括频谱图 附赠案例数据 可直接运行 …

GPT微信机器人部署,集成gpt问答、dall e3绘画、midjourney以及新闻热搜、天气等丰富联网功能,免费入群体验!

GPT问答和midjourney作为AI届两大亮点,都各自有官方体验方式。 同时,也有很多大神搭建了各类软件、平台供用户体验使用。 但是如果同时将GPT问答和midjourney集合到日常最常使用的微信呢? 打造一个微信机器人,不仅自己可以随时…

vue3 21 数据大屏scale

数据类型 ?:,有就指定 40.根据菜单动态生成路由,将路由放到store里 配置路由数据类型: 在template标签上做遍历的好处是,标签不会渲染到页面 菜单的递归(Menu): 130数据大屏:

使用mapstruct实现对象拷贝

Mapstructs实现对象拷贝: 单个对象拷贝(默认只拷贝属性名和方法名都相同的值),当属性名或者属性类型不同时可使用Mapping注解进行映射List拷贝List嵌套List拷贝 代码示例 import lombok.AllArgsConstructor; import lombok.Data; import org.mapstruct.Mapper; i…

Buffer Pool

Buffer Pool 概念free链表flush链表LRU链表chunk 概念 MySQL在启动时向操作系统申请的一片连续的内存,默认128M。然后将这块内存分为一个一个缓冲页(16KB,因为页就是16KB的)。再为每个缓冲页创建对应的控制块用于管理。比如第一次查询数据之后&#xff…

RockChip DRM Display Driver

资料来源: 《Rockchip_DRM_Display_Driver_Development_Guide_V1.0.pdf》 《Rockchip_Developer_Guide_DRM_Display_Driver_CN.pdf》 一:DRM概述 DRM(Direct Rendering Manager)直接渲染管理,buffer分配,帧缓冲。对应userspace库位libdrm,libdrm库提供了一系列友好的…

jmeter之接口测试实现参数化(利用函数助手),参数值为1-9(自增的数字)

1.前言 思考:为什么不用postman,用postman的话就得导入csv文件/json文件 如果不想导入文件,postman是实现不了,因为postman每次只会运行一次 2.jmeter函数助手实现参数化 (1)新建“线程组”--新建“http…

nginx安装ssl模块http_ssl_module

查看nginx安装的模块 /usr/local/nginx/sbin/nginx -V若出现“–with-http_ssl_module”说明已经安装过,否则继续执行下列步骤 进入nginx源文件目录 cd /usr/local/nginx/nginx-1.20.2重新编译nginx ./configure --with-http_ssl_module如果组件linux缺少&…

【投稿优惠|EI优质会议】2024年材料化学与清洁能源国际学术会议(IACMCCE 2024)

【投稿优惠|优质会议】2024年材料化学与清洁能源国际学术会议(IACMCCE 2024) 2024 International Conference Environmental Engineering and Mechatronics Integration(ICEEMI 2024) 一、【会议简介】 随着全球能源需求的不断增长,清洁能源的研究与应用成为了国际…

一文深度解读多模态大模型视频检索技术的实现与使用

当视频检索叠上大模型Buff。 万乐乐|技术作者 视频检索,俗称“找片儿”,即通过输入一段文本,找出最符合该文本描述的视频。 随着视频社会化趋势以及各类视频平台的快速兴起与发展,「视频检索」越来越成为用户和视频平…

Go语言指针变量

1. 指针变量 区别于C/C中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。 Go语言中的指针3个概念:指针地址、指针类型和指针取值。 1.1. Go语言中的指针 Go语言中的函数传参都是值拷贝,当我们想要修改某个变量的时候&a…

Top Down - Fantasy Forest (HDRP)

适用于任何自上而下游戏的近180个风格化资产的强大集合!无论是RTS、MOBA、RPG还是Hacknslash,此包都可以让您制作完整而详细的自上而下关卡。 特点: 共计177个预制件和4个粒子效果 6 个可平铺的地形纹理 7 棵树模型 24个灌木丛、草地和植物 14个蘑菇 20个资源节点(金、铁、…

04-了解所有权

上一篇: 03-常用编程概念 所有权是 Rust 最独特的特性,对语言的其他部分有着深刻的影响。它使 Rust 可以在不需要垃圾回收器的情况下保证内存安全,因此了解所有权的工作原理非常重要。在本章中,我们将讨论所有权以及几个相关特性&…

Ngnix负载均衡

配置Ngnix环境 1.安装 创建Nginx的目录: mkdir /soft && mkdir /soft/nginx/ cd /home/centos/nginx下载Nginx安装包通过wget命令在线获取安装包: wget https://nginx.org/download/nginx-1.21.6.tar.gz解压Nginx压缩包: tar -x…

RT-Thread: 串口操作、增加串口、串口函数

说明:本文记录RT-Thread添加串口的步骤和串口的使用。 1.新增串口 官方链接:https://www.rt-thread.org/document/site/rtthread-studio/drivers/uart/v4.0.2/rtthread-studio-uart-v4.0.2/ 新增串口只需要在 board.h 文件中定义相关串口的宏定…

宋仕强论道之华强北的缺货潮(十六)

始于2019年缺货潮让华强北又生产一大批亿万富翁,缺货的原因主要是:首先,疫情封控导致大量白领在家远程办公,需要购买电脑、打印机等办公设备,同时孩子们也要在家上网课,进一步增加对电子智能终端产品的需求…

Java实现天沐瑜伽馆管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课程预约模块2.4 系统公告模块2.5 课程评价模块2.6 瑜伽器械模块 三、系统设计3.1 实体类设计3.1.1 瑜伽课程3.1.2 瑜伽课程预约3.1.3 系统公告3.1.4 瑜伽课程评价 3.2 数据库设计3.2.…

口腔炎症和灼口综合征的区别有哪些?

随着社会发展的进步,当代人面临的压力越来越大,口腔疾病也随之而来。那么懂得如何分辨口腔疾病就至关重要。在我们绝大多数人眼里,口腔疾病都会统称为“上火”,但是不同的口腔疾病有不同症状和现象,如果没有早发现&…