我记不住的grep和find命令

news2025/1/15 12:45:09

前言: Linux操作中总是会用到查找操作,无论是查找文件、目录,还是查找文件中的内容等。grep命令用于在某个文件文本中查找指定的字符串,类似于word中的ctrl+F,而find命令用于在某个指定的目录中查找某个文件或某个目录。

一、grep

1. grep命令相关参数

用于在某个文件文本中通过正则表达式来查找指定的字符串。当grep被用在shell命令中,正则表达式应该被引号引起来。

–color=auto 或者 –color:表示对匹配到的文本着色显示

-i:即--ignore-case在搜索的时候忽略大小写

-n:显示结果所在行号

-c:统计匹配到的行数,将不会显示匹配的结果,注意,是匹配到的总行数,不是匹配到的次数,

-o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行

-v:输出不带关键字的行(反向查询,反向匹配)

-w:即--word-regexp匹配整个单词,如果是字符串中包含这个单词,则不作匹配。精确搜索

-Cx:即--context=NUM在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context

-e:实现多个选项的匹配,逻辑or关系

-s:  忽略相关不存在或无法读取等错误信息

-E:即--extended-regexp 以扩展的正则表达式进行解析(EREs)
-F:即 --fixed-strings,以固定字符串进行解析
-G:即 --basic-regexp 以基础的正则表达式进行解析,这是默认的
-P:即 --perl-regexp 以兼容perl的正则表达式进行解析

-H:  即 --with-filename 打印每一个匹配的文件名,当多个文件搜索时候这是默认的。

2.grep相关例子

grep相关命令格式:

       grep [OPTION...] PATTERNS [FILE...]
       grep [OPTION...] -e PATTERNS ... [FILE...]
       grep [OPTION...] -f PATTERN_FILE ... [FILE...]

例子一:忽略大小写和输出行数

在Helloworld.c文件中搜索main函数,i 代表忽略大小写,n代表输出行号

# grep -in "main" Helloworld.c 
3:void main(){

一般默认会以颜色突出关键词,如没有,可以使用 --color

例子二: 输出数量

只想知道有多少行包含指定的字符串,而不在乎哪些行包含这些字符串,使用”-c”选项即可只统计符合条件的总行数,而不会打印出行

例子三:打印上下文

除了打印被搜索到的关键字,还将其上下文打印出来,i 代表忽略大小写,n代表输出行号,C1代表输出其上和其下1行,如果输出2行则为C2

 例子四:精确搜索

只精确的关键字进行搜索,而不输出其他相关字符,-w以某个关键字进行精确搜索

 第一张图中没有 w,则将 mainhelloworld也输出了,而第二个图中有w选项,则只讲main进行输出。

例子五:反向查询

略,直接填一个参数 v即可

例子六:多个条件,混合查询,“或”的关系

以main和clean进行“或”查询。

二、find

用于在目录中搜索文件

1.find命令相关参数

  • -exec CMD: .
  • -links N : Search for files with ‘N’ links.
  • -name demo : Search for files that are specified by ‘demo’.
  • -perm octal : Search for the file if permission is ‘octal’.
  • -print : Display the path name of the files found by using the rest of the criteria.
  • -empty : Search for empty files and directories.
  • -size +N/-N : Search for files of ‘N’ blocks; ‘N’ followed by ‘c’can be used to measure the size in characters; ‘+N’ means size > ‘N’ blocks and ‘-N’ means size < ‘N’ blocks.
  • -user name : Search for files owned by username or ID ‘name’.
  • \(expr \) : True if ‘expr’ is true; used for grouping criteria combined with OR or AND.
  • +n  是大于n , -n 是小于n , n 等于n

  • c – bytes  , k – kilobytes  , M – Megabytes  , G – Gigabytes

2.find命令相关例子

find . -name sample.txt     查找当前目录下 sample.txt文件

find . -name "*.txt"     查找当前目录下 txt 文件

find . -iname "*.txt"     查找当前目录下txt或TXT文件,忽略大小写

find . -name sample.txt -exec rm -i {} \;  查找sample文件并进行确认删除

find . -empty  查找空的文件或文件夹

find . -type d -empty

find . -type f -empty

find . -perm 664 在当前目录及底层目录中查找 664权限的文件或文件夹

find . -type f -user jack -iname "makefile" | xargs ls -alh

find . -type f -name "abcd" 在当前目录下查找abcd文件

find . -type d -name "mydir" 在当前目录下查找mydir目录

find  / -name "*.php" -type f -exec chmod 755 {} \; 在根目录下找php文件并将其改为755

 

find  /etc /home  -name "config" -type f 在多个目录下查找config文件,这里是在/home和/etc下查询

find /usr /etc -iname "systemd" -o -iname "gdb" -type f

在/usr和/etc目录下查找 systemd和gdb文件

find / -size 30M  查找大小等于30M的文件

find / -size +2M  查找大小 大于2M的文件

find . -type f -size -10M 查找当前目录下大小 小于10M的文件

find . -type f -size +1M | xargs ls -alh   查找当前目录下大于1M的文件,并列出其详细信息

 find . -type f -size +100M  -size -200M  查找当前目录下文件大小,大于100M,小于200M的文件

find . -type f -ctime -3    // 在当前目录下查找修改小于3天的文件,ctime修改的是文件的属性、权限、名称位置

find . -type f -mtime -3  // 在当前目录下查找修改小于3天的文件,mtime修改的是文件的内容

find . -type f -mmin -3   // 在当前目录下查找修改小于3分钟的文件

同理还有  cmin,atime, amin等,  atime是指 access time通过cat/vim/less/more第一次访问的时间。

find . -name "*.c" -o -name "*.h"   //查找当前目录下所有的 .c和.h文件

三、grep和find混合使用

例子一:查找main函数

先使用find命令,以文件名的方式查找 后缀为.c的文件,然后从这个文件列表中的各个文件依次进行搜索关键字 main,并打印相关关键字所在的行号。

# grep -n main $(find . -name "*.c")

例子二: 查找main函数

先使用find命令搜索当前目录下面的所有文件,然后从这些文件内容中依次查找main

find . | xargs grep --color -nse '\<main\>'

例子三:统计main文件

在当前目录下,查找包含 main 关键字的文件,并输出其相关文件及行数

也就是说,我查找了当前目录下面包含main的所有文件

find ./ -type f -name "*.*" -exec grep -inH --color "main" {}  \; 

注意:一定在{}和\之间要有空格,否则将会报错。

例子四:统计行数

统计当前目录下, 以.c和.h结尾的文件的行数

find . -name "*.c" -o -name "*.h" | xargs cat | wc -l

 

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

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

相关文章

深入学习SpringCloud Alibaba微服务架构,揭秘Nacos、Sentinel、Seata等核心技术,助力构建高效系统!

课程链接&#xff1a; 链接: https://pan.baidu.com/s/1hRN0R8VFcwjyCTWCEsz-8Q?pwdj6ej 提取码: j6ej 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v4的分享 课程介绍&#xff1a; &#x1f4da;【第01阶段】课程简介&#xff1a;全…

函数性能探测:更简单高效的 Serverless 规格选型方案

作者&#xff1a;拂衣、丛霄 2019 年 Berkeley 预测 Serverless 将取代 Serverful 计算成为云计算新范式。Serverless 为应用开发提供了一种全新系统架构。借助 2023 年由 OpenAI 所带来的 AIGC 风潮&#xff0c;以阿里云函数计算 FC、AWS Lambda 为代表的 Serverless 以其更高…

软件压力测试对软件产品起到什么作用?

一、软件压力测试是什么? 软件压力测试是一种通过模拟正常使用环境中可能出现的大量用户和大数据量的情况&#xff0c;来评估软件系统在压力下的稳定性和性能表现的测试方法。在软件开发过程中&#xff0c;经常会遇到一些性能瓶颈和稳定性问题&#xff0c;而软件压力测试的作…

AlexNet网络结构详解

AlexNet论文地址&#xff1a; https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf 1、简介 AlexNet是2012年ISLVRC(ImageNet Large Scale Visual Recognition Challenge)竞赛的冠军网络&#xff0c;图像分类的正确率从70%提升到80%&…

《财讯》期刊简介及投稿要求

《财讯》杂志是经国家新闻出版总署批准&#xff0c;面向国内外公开发行的“全国综合性教育理论学术期刊 面向全国各级各类大、中专经济院校工作者&#xff1b;银行、经贸委、财政及行政管理人员&#xff0c;是作者科研、晋级等方面权威依据的优秀期刊。 主管单位&#xff1a;…

什么是冒烟测试?什么时候做冒烟测试?冒烟测试的用例哪儿来的?

什么是冒烟测试&#xff1f; 冒烟测试&#xff08;Smoke Testing&#xff09; 是软件测试中的一项基础测试&#xff0c;也称为构建验证测试&#xff08;Build Verification Testing&#xff09;&#xff0c;通常用于确认新版本的软件是否可以进行基本的功能测试或者是否能够正…

常见期权策略类型有哪些?

这几天在做一个期权策略类型的整理分类&#xff0c;怎么解释期权策略&#xff0c;期权策略是现代金融市场中运用非常广泛、变化非常丰富、结构非常精妙的金融衍生产品&#xff1b;同时也是一种更为复杂也更为灵活的投资工具&#xff0c;下文介绍常见期权策略类型有哪些&#xf…

图片转换成pdf格式?这几种转换格式方法了解一下

图片转换成pdf格式&#xff1f;将图片转换成PDF格式的好处有很多。首先&#xff0c;PDF格式具有通用性&#xff0c;可以在几乎任何设备上查看。其次&#xff0c;PDF格式可以更好地保护文件&#xff0c;防止被篡改或者复制。此外&#xff0c;PDF格式还可以更好地压缩文件大小&am…

BitLocker已加密 - 解决方案

BitLocker介绍 Bitlocker 是 Windows 磁盘加密功能&#xff0c;旨在通过为整个卷提供加密来保护数据。 BitLocker 解决了因设备丢失、被盗或不适当解除授权而遭受数据盗窃或泄露的威胁。 BitLocker虽然增强了数据安全性&#xff0c;但也增加了用户的使用困难度&#xff0c;因为…

Ansys Zemax | 手机镜头设计 - 第 1 部分:光学设计

本文是 3 篇系列文章的一部分&#xff0c;该系列文章将讨论智能手机镜头模组设计的挑战&#xff0c;从概念、设计到制造和结构变形的分析。本文是三部分系列的第一部分&#xff0c;将专注于OpticStudio中镜头模组的设计、分析和可制造性评估。&#xff08;联系我们获取文章附件…

【猿灰灰赠书活动 - 02期】- 【Java从入门到精通2023年7月最新(第7版)】

说明&#xff1a;博文为大家争取福利&#xff0c;与清华大学出版社合作进行送书活动 图书&#xff1a;《Java从入门到精通》 一、好书推荐 图书介绍 Java入门经典&#xff0c;95万Java程序员的入行选择。配备升级版Java开发资源库&#xff0c;在线大咖课在线答疑&#xff0c;学…

shell脚本之函数及数组

shell脚本之函数及数组 一函数1.1函数的作用1.2函数的基本格式1.3函数的注意事项1.4函数调用的方法1.5函数的返回值1.6函数的传参1.7在外部调用函数1.8函数变量的作用范围1.9函数的递归 二.数组2.1shell数组的定义2.2定义属组的方式2.3数组的数据类型2.4获取数组的数据列表2.5获…

回归预测 | MATLAB实现GRU门控循环单元多输入多输出

回归预测 | MATLAB实现GRU门控循环单元多输入多输出 目录 回归预测 | MATLAB实现GRU门控循环单元多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现GRU门控循环单元多输入多输出&#xff0c;数据为多输入多输出预测数据&#xff0c;输入10个…

2023电商销售额增幅全球第一!这个国家潜力正在爆发!

随着欧、美等跨境电商市场日趋饱和&#xff0c;拉美地区正逐渐成为全球电商投资的热点。这让该地区增长最强劲的电商市场——阿根廷——成为众多跨境卖家寻求增长与突破的新选择。 那么&#xff0c;阿根廷为什么是跨境卖家扩展电商业务的新机会&#xff1f;阿根廷电子商务市场…

ps变形怎么增加网格? PS怎么变形?

PS图片怎么变形&#xff1a;打开PS&#xff0c;找到需要处理的图片&#xff0c;复制图层&#xff0c;点选“编辑”—“变换”—“变形”&#xff0c;出现变形网格后&#xff0c;按需要操作就可以了。 PS是一款图片编辑的处理软件&#xff0c;它有很多的功能&#xff0c;在图形…

一百五十八、Kettle——Kettle各版本及其相关安装包分享(网盘链接,不需积分、不需验证码) 持续更新、持续分享

一、目的 最近因为kettle9.3的shim问题看了好多博客&#xff0c;都没有网盘分享。后来有一位博主分享了kettle9.2的shim安装包&#xff0c;已经很感谢他&#xff0c;但是是博客分享&#xff0c;下载还需要搞验证码下载码之类的。 kettle9.2的shim安装包下载好后&#xff0c;一…

基于LVQ神经网络的人脸朝向识别

1案例背景 1.1人脸识别概述 人脸识别作为一个复杂的模式识别问题,近年来受到了广泛的关注,识别领域的各种方法在这个问题上各显所长,而且发展出了许多新方法,大大丰富和拓宽了模式识别的方向。人脸识别、检测,跟踪、特征定位等技术近年来一直是研究的热点。人脸识别是人脸应用…

springboot结合shiro实战-身份认证

目录 环境搭建 配置shiro环境 总结 hello&#xff0c;大家好&#xff0c;我们写任何企业级项目基本都会需要做权限&#xff0c;权限包含身份认证和授权。 所谓身份认证&#xff0c;就是证明你是你。 所谓授权就是明白你登录之后能干什么。 现在&#xff0c;让我们用sprin…

根据一棵树的两种遍历构造二叉树

题目 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,…

【Java从0到1学习】09 正则表达式

1. 正则表达式概述 在编写处理字符串的程序或网页时&#xff0c;经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说&#xff0c;正则表达式就是记录文本规则的代码。 正则表达式&#xff0c;又称正规表示法、常规表示法&#xff…