Linux强大的查找功能 (find与grep命令的使用)

find与grep的区别:

find命令是根据文件的属性进行查找
如文件名 文件大小 所有者 所属组 是否为空 访问时间 修改时间等

grep是根据文件的内容进行查找
会对文件的每一行按照给定的模式(patter)进行匹配查找

一、find命令

find命令是⼀个无处不在的命令 是linux中最有用的命令之一
find命令用于在⼀个目录及⼦目录中搜索文件 可以指定⼀些匹配条件
如 按文件名 文件类型 用户甚至是时间戳查找文件

语法:

find 路径 -以什么查找 [-print] [-exec -ok command] {} \;

命令后面加上 -exec ls -l {} \ 代表列出每个文件的详细信息
即由-exec后面的ls -l指令作为参数

-name 根据文件名查找

例一:

find ~ -name "*.txt" -print

在根目录$HOME中查以txt结尾的文件并打印出来

例二:

find /etc -name "t*" -print

在etc目录中查以t开头的文件并打印出来

例三:

find . -name "[A-Z]*"  -print

查以大写字母开头的文件

例四:

find . -name "[a-z][a-z][0–9][0–9].txt" -print

查以两个小写字母和两个数字开头的txt文件


-perm 根据权限(permission)查找

例:

find -perm 644 -print

查权限为644的⽂件并打印出来


-type 根据类型查找

例一:

find ~ -type d

查类型为目录的⽂件

例二:

find ~ ! -type d

查类型不为目录的⽂件


-size 根据长度查找

例一:

find . -size +1000000c -print

查长度大于1Mb的文件(c:character 字符)

例二:

find . -size 100c -print

查长度为100c的文件

例三:

find . -size +10 -print

查长度大于10块的文件(1块=512字节)


二、grep命令

grep (global search regular expression(RE) and print out the line 全局搜索正则表达式并把行打印出来)
是⼀种强大的文本搜索⼯具 它能使用正则表达式搜索文本 并把匹配的行打印出来

查询

先看一个简单的查询例子:

grep 'Na' ex*

显示所有以ex开头的⽂件中包含Na的⾏

后面加上-r则代表递归
后面加上-n则代表显示行号
在这里插入图片描述

查找多个文件

grep 'Na' ex* /example.desktop /mnt /Music

多个路径之间用空格隔开

-v 取相反

grep -v "#" /etc/host.conf

表示从/etc/host.conf中查询以#开头的行

grep "#" /etc/host.conf

表示从/etc/host.conf中查询以#开头的行

| 管道:过滤

ls -l | grep "^d"

代表从ls -l输出的结果中过滤出以d开头的行
在这里插入图片描述


正则表达式的元字符

^ 锚定行的开始
如:'^grep'匹配所有以grep开头的行

$ 锚定行的结束
如:'grep$'匹配所有以grep结尾的行

. 匹配⼀个非换行符的字符
如:'gr.p'匹配gr后接⼀个任意字符 然后是p

*匹配零个或多个先前的字符
如:'*grep'匹配所有⼀个或多个空格后紧跟grep的行
. 和 * ⼀起用代表任意字符

[] 匹配⼀个指定范围内的字符
如:'[Gg]rep'匹配Grep和grep

[^] 匹配⼀个不在指定范围内的字符
如:'[^A-FH-Z]rep'匹配不包含A-F和H-Z的⼀个字母开头,紧跟rep的行


可选项

-b:在每一行前面加上其所在的块号
根据上下⽂定位磁盘块时可能会用到

-c:显示匹配到的行的数目 而不是显示行的内容

-h:不显示文件名

-i:比较字符时忽略大小写的区别

-l(小写字母L):只列出匹配行所在⽂件的文件名(每个文件名只列⼀次) ⽂件名之间⽤换行符分隔

-n:在每一行前⾯加上它在文件中的相对行号

-r:对目录下递归查询所有子目录

  • 在这里插入图片描述
    没加-r 文件夹无法查找
  • 在这里插入图片描述
    加了-r 递归查询该目录下所有子目录文件

-v:反向查找 只显示不匹配的行

-w:将表达式作为词来查找 就像它被<和>夹着那样
只适⽤于grep命令
(并非所有Linux版本的grep都支持该功能)


发布了56 篇原创文章 · 获赞 0 · 访问量 1166

猜你喜欢

转载自blog.csdn.net/Piconjo/article/details/104668181
今日推荐