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

news2024/11/16 9:40:54

一 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 命令的选项和表达式,实现各种复杂的查找需求。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

音频格式之AAC:(2)AAC封装格式ADIF,ADTS,LATM,extradata及AAC ES存储格式

系列文章目录 音频格式的介绍文章系列: 音频编解码格式介绍(1) ADPCM:adpcm编解码原理及其代码实现 音频编解码格式介绍(2) MP3 :音频格式之MP3:(1)MP3封装格式简介 音频编解码格式介绍(2) MP3 :音频格式之MP3&#x…

第14章_数据结构与集合源码(一维数组,链表,栈,队列,树与二叉树,List接口分析,Map接口分析,Set接口分析,HashMap的相关问题)

文章目录 第14章_数据结构与集合源码本章专题与脉络1. 数据结构剖析1.1 研究对象一:数据间逻辑关系1.2 研究对象二:数据的存储结构(或物理结构)1.3 研究对象三:运算结构1.4 小结 2. 一维数组2.1 数组的特点2.2 自定义数…

Linux——系统简介

1、从UNIX到LINUX 在目前主流的服务器端操作系统中,UNIX诞生于20世纪60年代末,Windows诞生于20世纪80年代中期,Linux诞生于20世纪90年代初,可以说UNIX是操作系统中的“老大哥”。 1.1、Linux简史 Linux内核最初是由李纳斯托瓦兹…

Chrony时间同步程序

Chrony简介 学习chrony之前首先要来看看chrony到底是干什么用的: chrony是网络时间协议 (NTP) 的通用实现。 它可以将系统时钟与 NTP 服务器、参考时钟同步 (例如 GPS 接收器),以及使用手表和键盘手动输入…

vue3---inputRef.value.focus()报错Cannot read properties of null (reading ‘focus‘)

问题描述&#xff1a;点击编辑按钮&#xff0c;出现el-input框&#xff08;el-input显示隐藏通过v-if控制&#xff09; <el-input ref"inputRef" v-if"isEdit" v-model"modelName" blur"isEdit false" /> <el-button text …

机器学习_常见算法比较模型效果(LR、KNN、SVM、NB、DT、RF、XGB、LGB、CAT)

文章目录 KNNSVM朴素贝叶斯决策树随机森林 KNN “近朱者赤&#xff0c;近墨者黑”可以说是 KNN 的工作原理。 整个计算过程分为三步&#xff1a; 计算待分类物体与其他物体之间的距离&#xff1b;统计距离最近的 K 个邻居&#xff1b;对于 K 个最近的邻居&#xff0c;它们属于…

【Maven教程】(十五):编写 Maven 插件—— 编写 Maven 插件的一般步骤及案例、Mojo 标注与参数、错误处理和日志 ~

Maven 编写 Maven 插件 1️⃣ 编写 Maven 插件的一般步骤2️⃣ 案例&#xff1a;编写一个用于代码行统计的 Maven 插件3️⃣ Mojo 标注4️⃣ Mojo 参数5️⃣ 错误处理和日志6️⃣ 测试 Maven 插件&#x1f33e; 总结 前面文章已经讲过&#xff0c;Maven 的任何行为都是由插件完…

[设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

如何使用Flutter构建高质量的用户界面

Flutter 是一种比较流行的移动应用开发框架&#xff0c;可以让开发者使用一个代码库构建高质量的 iOS 和 Android 应用。Flutter 以其快速、美观、高度可定制等优点吸引了开发社区的广泛关注。但如何使用 Flutter 构建高质量的用户界面呢&#xff1f;下面分为以下几个部分简单的…

聚醚醚酮(Polyether Ether Ketone)PEEK主要作用是什么?

聚醚醚酮&#xff08;Polyether Ether Ketone&#xff0c;PEEK&#xff09;在工程和高性能应用中具有广泛的应用&#xff0c;主要作用包括&#xff1a; 1.结构材料&#xff1a; PEEK因其优异的机械性能&#xff0c;包括高强度、高硬度和耐磨性&#xff0c;常被用作结构件的制造…

企业能源消耗监测管理系统是否可以做好能源计量与能耗分析?

能源消耗与分析是能源科学管理的基础&#xff0c;也可促进能源管理工作的改善&#xff0c;在企业中能源管理系统的作用也愈加重要。 首先&#xff0c;能源计量是能源管理的基础&#xff0c;通过能源精准计老化&#xff0c;容易出现测量设备不准确以及其他一些人为因素原因导致…

蓝凌OA sysUiExtend.do 任意文件上传漏洞复现

0x01 产品简介 蓝凌核心产品EKP平台定位为新一代数字化生态OA平台,数字化向纵深发展,正加速构建产业互联网,对企业协作能力提出更高要求,蓝凌新一代生态型OA平台能够支撑办公数字化、管理智能化、应用平台化、组织生态化,赋能大中型组织更高效的内外协作与管理,支撑商业…

编译PCL Qt程序

使用PCL的qt程序时&#xff0c;提示不是用QVTK编译的&#xff0c;所以需要在编译VTK时打开Qt的编译选项&#xff08;由于CMakeList比较复杂&#xff0c;使用CMakeGui进行配置&#xff0c;PCL同理&#xff09;&#xff0c;编译VTK完成后&#xff0c;编译PCL也需要配置Qt支持&…

【VTKExamples::PolyData】第十九期 ImplicitDataSetClipping

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例ImplicitDataSetClipping,并解析接口vtkIdFilter & vtkBox & vtkClipPolyData,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就…

Pandas ------ 向 Excel 文件中写入含有合并表头的数据

Pandas ------ 向 Excel 文件中写入含有合并表头的数据 推荐阅读引言正文 推荐阅读 Pandas ------ 向 Excel 文件中写入含有 multi-index 和 Multi-column 表头的数据 引言 这里给大家介绍一下如何向 Excel 中写入带有合并表头的数据。 正文 import pandas as pddf1 pd.D…

flutter设置windows是否显示标题栏和状态栏和全屏显示

想要让桌面软件实现全屏和不显示状态栏或者自定义状态栏&#xff0c;就可以使用window_manager这个依赖库&#xff0c;使用起来还是非常方便的&#xff0c;可以自定义显示窗口大小和位置&#xff0c;还有设置标题栏是否展示等内容&#xff0c;也可以设置可拖动区域。官方仓库地…

C语言实现希尔排序算法(附带源代码)

希尔排序 希尔排序&#xff0c;也称递减增量排序算法&#xff0c;是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的&#xff1a; 插入排序在对几乎已经排好序的数据操作时&#xff0c;效率高&#xff0…

Unity配置表xlsx/xls打包后读取错误问题

前言 代码如下&#xff1a; //文本解析private void ParseText(){//打开文本 读FileStream stream File.Open(Application.streamingAssetsPath excelname, FileMode.Open, FileAccess.Read, FileShare.Read);//读取文件流IExcelDataReader excelRead ExcelReaderFactory…

2011-2022年北大数字普惠金融指数“第五期”(包括省市县)

2011-2022年北大数字普惠金融指数“第五期”&#xff08;包括省市县&#xff09; 1、时间&#xff1a;2011-2022年 其中县级的时间为2014-2022年 2、来源&#xff1a;北大数字普惠金融指数 3、范围&#xff1a;全国31省&#xff0c;337个地级市以及2800个县 4、指标&#x…

利用nginx宝塔免费防火墙实现禁止国外IP访问网站

本章教程&#xff0c;主要介绍&#xff0c;如何利用nginx宝塔面板中的插件免费防火墙&#xff0c;实现一键禁止国外IP访问网站。 目录 一、安装宝塔插件 二、 开启防火墙 一、安装宝塔插件 在宝塔面板中的软件商店&#xff0c;搜索防火墙关键词&#xff0c;找到Nginx免费防火…