码迷,mamicode.com
首页 > 其他好文 > 详细

(四)文件搜索命令

时间:2015-11-10 23:51:03      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

===========================================================================================================================

locate命令

 

locate   文件名

 

含义:在后台数据库中按文件名搜索,搜索速度很快。

 

注意:(1locate的搜索方式是在“/var/lib/mlocate”这个数据库中进行搜索的(不同的Linux可能数据库的名字不一样)。

      但是mlocate这个数据库不是实时更新的,它的更新频率是一天一更新。所以会发生用locate可能搜索不到

      已经存在的文件的现象。我们可以使用“updatedb”命令来强制更新数据库,会解决这个问题。

    (2locate只可以按照文件名来搜索

 

locate的搜索规则

locate遵守一定的搜索规则,这个规则的配置文件位于“/etc/updatedb.conf”中。我们可以打开看一看有哪些规则。

如下图:

 技术分享

 

来解释一下上图中每一句话的含义:

PRUNE_BIND_MOUNTS 是否开启这些规则,为“yes”则开启,为“no”则不开启。

PRUNEFS 搜索时不搜索的文件系统

PRUNENAMES 搜索时不搜索文件名中包含这些关键字的文件

PRUNEPATHS 搜索时这些目录当中的文件不搜索

 

因此你可能会遇到这样的情况:比如你所搜索的文件名在/tmp目录下也存在,但是搜索的结果却没有/tmp下面的这个文件。

这下,你知道为什么了吧。

 

注:不仅locate遵守updatedb.conf这个配置文件的搜索规则,下面要讲到的whereiswhich命令也遵守这个配置文件的规则。

===========================================================================================================================

whereis命令

 

whereis   命令名

 

含义:搜索命令所在的路径以及相应帮助文档所在的路径

 

选项:

-m 只查找帮助文件

-b 只查找可执行文件

===========================================================================================================================

which命令

 

which 命令名

 

含义:这个命令跟whereis的功能一样,唯一不同的是which搜索的是命令所在路径以及命令的别名(不含帮助文档)。

 

注:并不是所有的命令都有别名的。也并不是所有的命令都有所在路径的,比如搜索“cd”命令的路径就搜索不到。

===========================================================================================================================

find命令

 

find  [搜索范围]  [搜索条件]

 

含义:这是find命令基本的格式。

 

find命令十分强大,选项也是多种多样。下面是几个常用的,重点学习记忆:

 

find / -name install.log

 

含义:搜素范围是根目录(”/“),搜索的条件是按名称搜索“install.log”。你可以灵活改动各个选项。

 

注意:find的搜索匹配是完全匹配的,也就是说它搜索出来的东西的名称应该和“install.log”一模一样,多一个字母

少一个字母都不行。如果想要进行模糊搜索,则需要使用通配符。

 

find /root -iname istall.log

 

含义:在root目录下搜索名为”istall.og”的文件,且文件名不区分大小写。

 

find / -user root

 

含义:在根目录下搜索所有者为”root”的文件,也即是说“-user”是按所有者进行搜索。

 

find / -nouser

 

含义:在根目录下搜索没有所有者的文件。也即是“-nouser”是搜索没有所有者的文件。

 

注意:Linux中没有所有者的文件一般为垃圾文件,应当删除。但是有以下两种情况文件没有所有者是正常的。

1)在“/proc/”和“/sys/”目录下的文件如果没有所有者正常,不要删除。

2)外来文件也可能没有所有者,比如你插入的U盘中的文件是在windows中创建的,则

可能没有所有者,正常。

 

find /var/log/ -mtime +10

 

含义:搜索10天修改了内容的文件。

 

注:在这个命令中,后两个参数是可以更改的。如下:

atime 文件访问时间

ctime 改变文件属性

mtime 修改文件内容

-10 10天内修改的文件

10 10天前的当天修改的文件

+10 10天前的修改文件

 

对于这个-10+10你可能还不了解,下面是个时间轴,可以帮助理解:

 技术分享

 

 

find /var/log atime +10

 

含义:搜索10天被访问的文件。也就是“atime”表示是按访问时间来搜索的。

 

find . -size 25k

 

含义:搜索当前目录中大小为25k的文件。也就是说“-size“是按大小搜索的意思。

 

注:25k 等于25k

-25k 小于25k

+25k 大于25k

 

注意:必须写成25k(且k是小写的)或者25M(且M是大写的),不能写成数字25.

 

find . -inum 262422

 

含义:搜索当前目录中,i节点号为262422的文件。也即是“-inum“是按i节点搜索的意思。

 

find /etc -size +20k -a -size -50k

 

含义:搜索etc目录下大小小于50k且大于20k的文件。

 

注:-a 即逻辑与,两个条件都满足。

-r 即逻辑或,两个条件满足一个即可。

 

find /etc -size +20k -a -size -50k -exec ls -lh {} \;

 

含义:搜索etc目录下大小小于50k且大于20k的文件,并且把他们的详细信息展示出来。

 

注:在这里”-exec {} \;”是一个固定的写法,它的中间用来添加第二条命令。比如上面,在中间添加

了命令“ls -lh”,表明对前面得到的结果执行此命令。因此这个第二条命令必须是能够对前面的结果

进行操作的命令。

 

===========================================================================================================================

通配符

 

各个通配符的含义如下:

 

* 匹配任意内容

?匹配任意一个字符

[] 匹配中括号内的任意一个字符

 

举例如下:

 

find /root -name “install.log*”

含义:在root目录下按名称搜索任意以”installlog”开头的文件。

 

find /root -name “ab[cd]”

 

含义:在root目录下按名称搜索文件名为“abc”或者为”abd”的文件,即中括号中任意一个字符匹配皆可以。

 

===========================================================================================================================

grep命令

 

grep [选项] 字符串文件名

 

含义:在文件中搜索包含指定字符串的内容。

选项:

-i 忽略大小写

-v 排除指定字符串

例如: grep “size” install.log

意思就是在文件install.log中搜索包含”size”字符串的的内容。

 

===========================================================================================================================

 

(四)文件搜索命令

标签:

原文地址:http://www.cnblogs.com/fuly550871915/p/4954857.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!