一分钟学一个 Linux 命令 - find 和 grep
前言
大家好,我是 god23bin。欢迎来到《一分钟学一个 Linux 命令》系列,每天只需一分钟,记住一个 Linux 命令不成问题。今天需要你花两分钟时间来学习下,因为今天要介绍的是两个常用的搜索命令:find 和 grep 命令。
find
什么是 find 命令?
find 命令用于在指定的目录下搜索文件和目录。它提供了丰富的搜索条件和选项,可以根据文件名、文件类型、文件大小、修改时间等属性进行搜索。find 命令通常用于查找特定文件或根据条件进行批量操作。
find命令通常进行的是从根目录 / 开始的全盘搜索,所以不要在高峰时期使用 find 命令。
如何使用 find 命令?
find 命令的使用相对较复杂,但掌握了基本语法后,你就能灵活使用它。
基本语法:
find 目录路径 [选项参数] [搜索条件]
- 目录路径:指定要查找的目录路径。
- 选项参数:用于指定匹配条件,例如文件名、类型。
- 搜索条件:用于指定要搜索的文件和目录,满足这个条件的就会被搜索出来。
举例说明
假设我们想找到在 /opt/games 目录下所有以 .txt 扩展名结尾的文件,则可以使用以下命令:
find /opt/games -name "*.txt"
这将在 /opt/games 目录及其子目录中搜索所有以 .txt 结尾的文件,并将它们列出。

如果要在当前目录及其子目录中查找所有以 .txt 结尾的文本文件,则可以使用以下命令:
find . -name "*.txt"

常用选项参数
-name:按文件名进行匹配。-type:按文件类型进行匹配。-size:按文件大小进行匹配。-user:按文件所属用户进行匹配。-mtime:(modified)按文件最后内容的修改时间进行匹配。-perm:(permission)按文件权限进行匹配。
例子
- 搜索
/home目录及其子目录中包含god23bin结尾的目录和文件:
find /home -name "*god23bin*"

- 搜索
/opt/games目录下的所有类型为目录的文件(注意:目录也是一种特殊的文件)
find /opt/games -type d

- 查找
/boot目录及其子目录下所有大小大于 1MB 的文件:
find /boot -size +1M

- 查找
/home目录及其子目录下所有属于 god23bin 这个用户的文件(目录):
find /home -user god23bin

- 搜索
/opt目录及其子目录下最近 7 天内发生过修改的文件(目录):
find /opt -mtime +7

按权限进行匹配
这里先说下,-perm 后面的内容使用数字或符号来表示文件权限,举个例子 /u+rw,这里的 /u 表示用户(所有者)权限,rw 表示具有读写权限,中间的 + 用来表示「具有」
还有其他几个字母:
/g,组(group)权限;/o,(other)其他用户权限;/a,(all)所有用户权限。读写可执行:
r(read),w(write),x(execute)
-表示没有:比如/u-rw,指用户没有读写权限
- 搜索当前目录及其子目录下所有具有读写权限的文件(目录):
find /opt -perm /u+rw

- 搜索当前目录及其子目录下其他用户具有读写权限的目录:
find /opt -type d -perm /o+rw

grep
什么是 grep 命令?
grep 命令是 global regular expression print 的缩写,用于在文件、多个文件或输入流中进行正则匹配,它会匹配我们在命令行中指定的「文本模式」(Pattern),并将结果输出打印。
换句话说,它会按我们提供的文本模式去搜索文件的内容。
如何使用 grep 命令?
grep 命令的使用非常简单,你只需在终端中输入 grep,并指定要搜索的模式和文件名。
基本语法:
grep [选项参数] 文本模式 文件名
举例说明
现在我们在 opt/games/gta6 目录下,有一个名为 readme.txt 的文件,像搜索里面包含关键字 "VI" 的行,那么可以使用以下命令:
grep "VI" readme.txt
这将在文件中查找包含 "VI" 的行,并将其打印输出。

当然,文本模式可以不用加双引号,也是可行的:
grep VI readme.txt

常用选项参数
-i:(ignore)忽略大小写进行匹配。-n:(number)显示匹配行的行号。-v:(reverse)反向匹配,打印不包含模式的行。-r:(recursive)递归搜索指定目录及其子目录下的文件。
例子
- 在
readme.txt中搜索 "vi",忽略大小写:
grep -i "vi" readme.txt

- 在
readme.txt中搜索http,显示所在的行号:
grep -n http readme.txt

- 在
show.txt中进行反向匹配,打印不包含文本模式 “我” 的行:
grep -v 我 show.txt

- 当前目录及其子目录中递归搜索包含关键字
go的行:

在标准输入流中搜索指定模式
基本写法:
command | grep pattern
这里,command 是生成输出的命令,pattern 是要搜索的模式,| 是管道符,可以将两个命令分隔开,|左边命令的输出就会作为 | 右边命令的输入
比如在读取 show.txt 的时候搜索 god23bin:
cat show.txt | grep god23bin

这种用法,我一般是在大量日志输出中想找到错误信息的时候会用到:
tail -2000f project-test.log | grep -i error
总结
现在,通过两分钟的快速学习,相信你已经学费了 find 和 grep 命令的基本使用了!
find 主要用于搜索文件和目录,而 grep 命令主要用于搜索文件的内容。当然,这里实际上还只是冰山一角,剩下的交给你去探索吧!
如果你对其他 Linux 命令也感兴趣,敬请期待我后续的文章。谢谢大家的阅读!
最后的最后
希望各位屏幕前的靓仔靓女们给个三连!你轻轻地点了个赞,那将在我的心里世界增添一颗明亮而耀眼的星!
咱们下期再见!
一分钟学一个 Linux 命令 - find 和 grep的更多相关文章
- 一天学一个Linux命令:第一天 ls
文章更新于:2020-03-02 注:本文参照 man ls 手册,并给出使用样例. 文章目录 一.命令之`ls` 1.名字及介绍 2.语法格式 3.输出内容示例 4.参数 二.命令实践 1.`ls ...
- 一天学一个Linux命令:第二天 cd pwd
文章更新于:2020-03-08 注:本文参照 man pwd 手册,并给出使用样例. 文章目录 一.命令之 `cd` 和 `pwd` 1.命令介绍 2.语法格式 3.使用样例 4.pwd 参数 5. ...
- 每天一个linux命令8之grep高级篇
1语法 grep -[acinv] '搜索内容串' filename -a 以文本文件方式搜索-c 计算找到的符合行的次数-i 忽略大小写-n 顺便输出行号-v 反向选择,即找 没有搜索字 ...
- 【转载】每天一个Linux命令
目 录 每天一个linux命令(1) : ls 命令 每天一个linux命令(2) : cd 命令 每天一个linux命令(3) : pwd 命令 每天一个linux命令(4) : mkdi ...
- 每天一个 Linux 命令(21):find命令之xargs
在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出 ...
- 每天一个linux命令目录
出处:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每 ...
- 每天一个linux命令-转载
每天一个linux命令目录 转载自: http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令 ...
- [转]每天一个linux命令目录
[转]每天一个linux命令目录 http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每 ...
- 每天一个linux命令:find
1.命令简介 find(find) 命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子 ...
- (2)free详解 (每周一个linux命令系列)
(2)free详解 (每周一个linux命令系列) linux命令 free详解 引言:今天的命令是用来看内存的free free 换一个套路,我们先看man free中对free的描述: Displ ...
随机推荐
- 关于js类的继承
原型链继承 特点:基于原型链,既是父类的实例,也是子类的实例. 缺点: 无法实现多继承. 构造继承 特点: 可以实现多继承. 缺点: 之能继承父类实例的属性和方法,不能继承原型上的属性和方法. 实例继 ...
- webgl 系列 —— 着色器语言
其他章节请看: webgl 系列 着色器语言 本篇开始学习着色器语言 -- GLSL全称是 Graphics Library Shader Language (图形库着色器语言) GLSL 是一门独立 ...
- Django笔记十五之in查询及date日期相关过滤操作
这一篇介绍关于范围,日期的筛选 in range date year week weekday quarter hour 1.in in 对应于 MySQL 中的 in 操作,可以接受数组.元组等类型 ...
- python中的强制等待、隐性等待、显性等待
运行结果过程中出现Unable to locate element时,1.先确定元素是否定位有误.2.再确定运行过程中是否等待不到位,可以截图,查看查找时页面的状态. 1.使用强制等待 --辅助 2. ...
- Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)
Redhat7/CentOS7 网络配置与管理(nmtui.nmcli.GNOME GUI.ifcfg文件.IP命令) 背景:作为系统管理员,需要经常处理主机网络问题,而配置与管理网络的方法和工具也有 ...
- CentOS8 搭建Kubernetes
CentOS8 搭建Kubernetes 主机名 IP 组件 k8s-master 192.168.40.128/24 kubeadm.kubelet.kubectl.docker-ce k8s-no ...
- flask目录结构及博客项目实战地址
[Flask] 项目结构说明 项目结构 Flask的一大优势就是其极其轻量化.但是也需要注意到,如果我们要用Flask做一个大项目的话,把所有代码写在一个文件里肯定是不合适的.非常难以维护.但是和 ...
- 粘包,自定义协议,struct模块,粘包解决终极大招
粘包: 1.粘包问题出现的原因: (udp不会出现粘包问题) 1.1.tcp是流式协议,数据像水流一样黏在一起,没有任何边界区分 1.2.收数据没收干净,有残留,就会下一次结果混淆在一起去(客户端接受 ...
- 对抗 ChatGPT,免费体验 Claude
对抗 ChatGPT,免费体验 Claude Claude 是 Anthropic 构建的大型语言模型(LLM),对标ChatGPT. Anthropic 创始团队多是前openai研究员和工程师,C ...
- 由 Base64 展开的知识探讨
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值.. 本文作者:霜序(掘金) 前言 在我们的业务应用中越来越多的应用到编 ...