前言
大家好,我是 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
的行:
在规范输出流中搜寻指定模式
Linux 中的规范输入输出、重定向、管道符 - 简书
根本写法:
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 命令也感兴趣,敬请期待我后续的文章。谢谢大家的浏览!
最初的最初
心愿各位屏幕前的 靓仔靓女们
给个三连!你轻轻地点了个赞,那将在我的心里世界削减一颗亮堂而夺目的星!
咱们下期再见!