Linux命令之find 和 grep用法详解

 更新时间:2023年07月25日 09:44:01   作者:god23bin  
今天主要介绍的是两个常用的搜索命令:find 和 grep 命令,文中代码示例介绍的非常详细,对我们学习Linux 命令有一定的帮助,需要的朋友可以参考下

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 的行:

在标准输入流中搜索指定模式

Linux 中的标准输入输出、重定向、管道符-简书

基本写法:

command | grep pattern

这里,command 是生成输出的命令,pattern 是要搜索的模式,| 是管道符,可以将两个命令分隔开,|左边命令的输出就会作为 | 右边命令的输入

比如在读取 show.txt 的时候搜索 god23bin

cat show.txt | grep god23bin

这种用法,我一般是在大量日志输出中想找到错误信息的时候会用到:

tail -2000f project-test.log | grep -i error

总结

现在,通过两分钟的快速学习,相信你已经学费了 findgrep 命令的基本使用了!

find 主要用于搜索文件和目录,而 grep 命令主要用于搜索文件的内容。当然,这里实际上还只是冰山一角,剩下的交给你去探索吧!

如果你对其他 Linux 命令也感兴趣,敬请期待我后续的文章。谢谢大家的阅读!

到此这篇关于Linux命令之find 和 grep用法详解的文章就介绍到这了,更多相关Linux命令find和grep内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux 实现压缩保留源文件的方法

    Linux 实现压缩保留源文件的方法

    下面小编就为大家分享一篇Linux 实现压缩保留源文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • bash shell中的if-then语句

    bash shell中的if-then语句

    bash shell的 if 语句会运行 if 后面的那个命令,如果该命令的退出状态码是0,位于 then 部分的命令就会被执行,这篇文章主要介绍了bash shell中的if-then语句,需要的朋友可以参考下
    2023-12-12
  • shell脚本查看k8s日志介绍

    shell脚本查看k8s日志介绍

    大家好,本篇文章主要讲的是shell脚本查看k8s日志介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • shell脚本自动安装jdk的方法示例

    shell脚本自动安装jdk的方法示例

    这篇文章主要介绍了shell脚本自动安装jdk的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • shell编程中的字符串截取方法小结

    shell编程中的字符串截取方法小结

    这篇文章主要介绍了shell编程中的字符串截取方法小结,本文讲解了截取字符变量的前8位的方法、按指定的字符串截取方法、按照指定要求分割方法等内容,需要的朋友可以参考下
    2015-03-03
  • Linux nano命令使用示例

    Linux nano命令使用示例

    nano是一个小型、免费、友好的编辑器,旨在取代非免费Pine包中的默认编辑器Pico,nano是一个字符终端的文本编辑器,有点像DOS下的editor程序,这篇文章主要介绍了Linux nano命令使用示例,需要的朋友可以参考下
    2023-03-03
  • Formatting Long Lines 格式化多行字符的shell脚本

    Formatting Long Lines 格式化多行字符的shell脚本

    这篇文章主要介绍了Formatting Long Lines 格式化多行字符的shell脚本,需要的朋友可以参考下
    2016-08-08
  • Shell循环语句及中断语句的使用

    Shell循环语句及中断语句的使用

    本文主要介绍了Shell循环语句及中断语句的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Bash EOF的使用小结

    Bash EOF的使用小结

    本文主要介绍了Bash EOF的使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • linux的cut命令用法总结

    linux的cut命令用法总结

    今天小编就为大家分享一篇关于linux的cut命令用法总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04

最新评论