(四)文件搜索命令

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

locate命令

locate   文件名

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

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

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

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

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

locate的搜索规则

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

如下图:

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

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

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

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

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

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

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

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

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

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”字符串的的内容。

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

时间: 2024-10-06 12:51:31

(四)文件搜索命令的相关文章

四.文件搜索命令

locate 文件名 在后台数据库中按文件名来搜索/var/lib/mlocate(每天自动更新一次) updatedb 手动更新后台数据库/var/lib/mlocate whereis 命令名 -b 只查可执行文件 -m 只找帮助文件 which 命令名 可查看命令别名 find [搜索范围] [搜索条件] -name 名字区分大小写 -iname 名字不区分大小写 -user 所有者 -nouser 没有所有者 -mtime 时间 -size 大小 -inum i节点号 例子: find

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma

Linux常用命令(第二版) --文件搜索命令

文件搜索命令 1.which /usr/bin/which #显示系统命令所在目录,绝对目录,不能查找文件 格式:which [系统命令] e.g. which ls 附-whereis:也可以查找到命令的绝对路径 与whereis不同,which会列出这个命令的别名记录,而whereis会显示出这个命令的帮助文档所在位置 2.find /usr/bin/find #查找文件或目录,任何文件皆可,如图片,压缩包等 语法:find [搜索路径] [搜索选项] filename a) find /e

小蚂蚁学习Linux(4)——链接命令ln、文件搜索命令locate、whereis和which

链接命令ln    (取自link之意) ln  [源文件]    [目标文件]    功能:生成链接文件.    -s 创建软连接 ,不加是创建硬链接 硬链接的特征: 1. 拥有相同的i节点和存储block快,可以看做是同一个文件. 2. 可通过i节点识别 3. 不能跨分区 4. 不能针对目录使用 备注:硬链接只要不把所有文件名删除,删除其中一个不影响其他文件名的使用. 需要注意的是,不建议只用硬链接: 1. 硬链接太过隐蔽,只能通过查看inode节点id号识别 2. 自身的限制也比较多. 替

LInux 文件搜索命令

文件搜索命令  locate 优点:搜索速度很快 缺点: 只能搜索文件名(速度快 耗费资源少) localte  文件名 (在后台数据库中按文件名 搜索,搜索速度快  localte 命令并不是在系统中去搜索 ) 而是会在 /var/lib/mlocate  后台数据库  (#locate 命令所搜索的后台数据库 该数据库是一天一更新) updatedb  可以立刻更新数据库 locate 搜索时: 按照配置文件来进行搜索  /etc/updatedb.conf 配置文件 # 开启搜索限制 pr

文件搜索命令

1.文件搜索命令  locate 命令格式 :  locate   文件名 (只能文件名) #按/etc/updatedb.conf配置文件在后台数据库中(/var/lib/mlocate)按文件名搜索 ps:   1.不是实时更新,updatedb  更新数据库 2.搜索系统命令  whereis.which (1).命令格式:  whereis  命令名 #搜索命令所在的路径及帮助文档所在位置 -b:   只查找可执行文件 -m:  只查找帮助文件 (2).命令格式 : which  命令名

linux文件搜索命令

文件搜索命令使用高峰期时尽量少用find,尽量缩小搜索范围,尽量精确搜索关键词 find -a (and) -o(or) find /路径 -name 文件名find /路径/*文件名*通配符find /路径/文件名???匹配三个字符find /路径 -iname 文件名 搜索结果包括大写的 find -type f文件 d目录 l软连接       -inum按节点find / -size +1M k 代表搜索大于100MB的文件 -204800 204800        -mtime +-

Linux自学第二天(权限管理命令、文件搜索命令、帮助命令)

添加用户两步走:1.useradd username   2.passwd ps  权限管理命令 命令名称:chmod  ->>change the permissions mode of a file 命令所在路径:/bin/chmod 执行权限:所有用户 语法:chmod [{u g o} {+-=}{rwx}][文件或目录] [mode = 421] [文件或目录] +:增加权限 -:减少权限 =:直接赋予权限 掌握的重点是用数字的方式进行权限控制,r=4 w=2 x=1. rwxr-x

Linux —— 文件搜索命令

文件搜索命令(配置文件/etc/updatedb.conf) locate 文件名 搜索速度非常快 在后台数据库中按照文件名搜索 updatedb 更新数据库 只可以按照文件名搜索 whereis 命令名 搜索命令所在路径以及帮助文档所在的位置 -b: 只查找可执行文件 -m: 只查找帮助文档 which 命令名 别名,所在路径 find [搜索范围] [搜索条件] 从根节点遍历一遍 通配符 匹配任意内容 ? 任意一个字符 [] 指定范围 按照名字搜索 iname 名字不区分大小写-name 区

2016/8/18 Linux常用命令 : 文件搜索命令

推荐一款windows软件:everything,可快速搜索到文件 1.文件搜索命令:find 不要在服务器使用高峰期用find,find范围尽量小 find [范围] [匹配条件] 范例: find /etc -name init :在目录/etc下查找文件init ,精准搜索,若要模糊搜索用*匹配 find /  -size +204800 :在根目录下查找大于100M的文件 find /home -user shenchao :在根目录下查找所有者为shenchao的文件 find /et