乐趣区

关于后端:一分钟学一个-Linux-命令-find-和-grep

前言

大家好,我是 god23bin。欢送来到《一分钟学一个 Linux 命令 》系列, 每天只需一分钟,记住一个 Linux 命令不成问题。明天须要你花两分钟工夫来学习下,因为明天要介绍的是两个罕用的搜寻命令:findgrep 命令。

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)按文件权限进行匹配。

例子

  1. 搜寻 /home 目录及其子目录中蕴含 god23bin 结尾的目录和文件:
find /home -name "*god23bin*"
  1. 搜寻 /opt/games 目录下的所有类型为目录的文件(留神:目录也是一种非凡的文件
find /opt/games -type d
  1. 查找 /boot 目录及其子目录下所有大小大于 1MB 的文件:
find /boot -size +1M
  1. 查找 /home 目录及其子目录下所有属于 god23bin 这个用户的文件(目录):
find /home -user god23bin
  1. 搜寻 /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,指用户没有读写权限

  1. 搜寻当前目录及其子目录下所有具备读写权限的文件(目录):
find /opt -perm /u+rw
  1. 搜寻当前目录及其子目录下其余用户具备读写权限的目录:
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)递归搜寻指定目录及其子目录下的文件。

例子

  1. readme.txt 中搜寻 “vi“,疏忽大小写:
grep -i "vi" readme.txt
  1. readme.txt 中搜寻 http,显示所在的行号:
grep -n http readme.txt
  1. show.txt 中进行反向匹配,打印不蕴含文本模式“”的行:
grep -v 我 show.txt
  1. 当前目录及其子目录中递归搜寻蕴含关键字 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 命令也感兴趣,敬请期待我后续的文章。谢谢大家的浏览!

最初的最初

心愿各位屏幕前的 靓仔靓女们 给个三连!你轻轻地点了个赞,那将在我的心里世界削减一颗亮堂而夺目的星!

咱们下期再见!

退出移动版