Linux学习(2)——文件搜索命令

目录

Linux中的文件搜索命令

文件搜索命令:locate

命令搜索命令:whereis与which

文件搜索命令:find

字符串搜索命令:grep


学习视频乃是慕课教程:https://www.imooc.com/video/4018

本节是学习所作笔记及总结。

Linux中的文件搜索命令

文件搜索命令:locate

搜索速度非常快,而find命令比较耗费资源,会根目录开始把所有的搜索一遍,locate命令只能搜索文件名

locate 文件名
	在后台数据库中按文件名搜索,搜索速度更快。
	locate命令是在/var/lib/mlocate中搜索的后台数据库,大概每天数据库更新一次,如果没有更新今天的,则无法搜索到,需要等到它更新完成。
	优点是快,但缺点是只能按照文件名搜索。
updatedb
	强制更新locate数据库。

/etc/updatedb.conf配置文件,locate搜索命令是通过这个规则的,可以通过vi /etc/updatedb.conf命令查看内容。

  • PRUNE_BIND_MOUNTS="yes" 开启搜索限制

  • PRUNEFS= 搜索时,不搜索的文件系统

  • PRUNENAMES= 搜索时,不搜索的文件类型

  • PRUNEPATHS= 搜索时,不搜索的路径

例1:locate five命令,搜索名为five的目录

例2:locate install.log命令,搜索名为install.log的文件。

例3:updatedb命令,可以看到临时创建了一个名为test.log的文件,但是使用locate命令无法搜索到,因为数据库没有更新,所以使用updatedb命令强制更新数据库,就能够成功搜索到结果。

 

命令搜索命令:whereis与which

whereis 命令名
	搜索某个系统命令所在路径及帮助文档所在位置,不能搜索文件。[whoami]查看属于谁。[whatis 命令名]查看该命令是做什么的。[whereis -b 命令名][whereis -m 命令名]
	选项:
		-b 只查找可执行文件
		-m 只查找帮助文件
which 命令名
	能看到命令的所在路径,及命令的别名

例1:whereis ls命令,查找ls命令所在路径及帮助文档的所在路径。

例2:whereis -b ls命令,查找ls命令的课执行文件所在目录。

例3:which ls命令,查看ls命令所在路径及别名。

 

文件搜索命令:find

语法:

find [搜索范围] [搜索条件]
	该命令用来搜索文件。
	如[find / -name install.log]命令,但使用该命令时应该避免大范围搜索,因为会非常耗费系统资源。find是在系统当中搜索符合条件的文件名,如果需要匹配,则使用通配符匹配,通配符完全匹配。

Linux中的通配符

  • 星号(*):匹配任意内容

  • 问号(?):匹配任意一个字符

  • 中括号([]):匹配任意一个中括号内的字符

其他

  • [find /root -iname 文件名] 不区分大小写

  • [find /root -user 所有者名] 按照所有者进行搜索

  • [find /root -nouser] 用来搜索没有所有者的文件,一般是垃圾文件,不过也有特殊情况。

  • [find /root -mtime +10] 查找10天前修改的文件,其中"/root"指的是搜索范围。

    • -10 10天内修改文件

    • 10 10天当天修改的文件

    • +10 10天前修改的文件

    • atime 文件访问时间

    • ctime 改变文件属性

    • mtime 修改文件内容

  • [find /root -size 25k] 查找文件大小是25KB的文件,查找兆要用M,其中"/root"指的是搜索范围。

    • -25k 小于25KB的文件

    • 25k 等于25KB的文件

    • +25k 大于25KB的文件

  • [find /root -inum 26244] 查找i节点是262422的文件,其中"/root"指的是搜索范围。

  • [find /etc -size +20k -a -size -50k] 查找/etc/目录下大于20KB并且大于50KB的文件

    • -a and,逻辑与,两个条件都满足

    • -o or,逻辑或,两个条件满足一个即可

  • [find /etc -size +20k -a -size -50k -exec ls -lh {} \;] 查找/ect/目录下,大于20KB并且大于50KB的文件,并显示详细信息。[-exec 命令 {} \;]这是标准格式,是处理第一个命令的结果。

例1:find /root -name install.log命令,在root目录下查找名为install.log的文件,其中"/root"是要查找的目录,"-name"表示按文件名查找,“install.log"表示要查找的文件名。

例2:find /root -user root命令,在root目录下查找文件所有者是root的文件。

例3:find /root -mtime +10命令,在root目录下查找最后修改时间是10天之前的文件

可以执行exec命令查看具体日期

例4:find /root -size -10k命令,查找root目录文件大小小于10k的文件

例5:find /root -size +10k -a -size -60k命令,在root目录下查找大于10k小于60k的文件

查看文件具体大小:

例6:find /etc -size +20k -a -size -50k -exec ls -lh {} \;命令,查找/ect/目录下,大于20KB并且大于50KB的文件,并显示详细信息 。

 

字符串搜索命令:grep

grep [选项] 字符串 文件名
	在文件当中匹配符合条件的字符串
	选项:
		-i 忽略大小写
		-v 排除指定字符串

find命令与grep命令的区别

  • find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。

  • grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配。

例1:grep "ab" install.log命令,在install.log文件中查找"ab”的内容。

例2:grep -v "ab" install.log命令,在install.log文件中搜索除“ab"字符串外的所有字符串。

发布了500 篇原创文章 · 获赞 77 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/cnds123321/article/details/104941306