
mlocate 是 Linux 上最广泛使用的文件搜索工具之一。它建立并维护一个数据库,其中包含系统上所有文件的位置信息。这使得搜索操作非常快速和高效。与传统的命令相比,使用 mlocate 可以大大缩短搜索时间。
大多数 Linux 发行版都会预装 mlocate。您的系统没有预装,您可以使用包管理器进行安装。例如,在 Ubuntu 或 Debian 系统上,您可以使用以下命令:
sudo apt-get install mlocate
在 CentOS 或 RHEL 系统上,您可以使用以下命令:
sudo yum install mlocate
安装完成后,您需要更新 mlocate 数据库。可以使用以下命令来执行此操作:
sudo updatedb
该命令会扫描整个文件系统,并将所有文件的位置信息保存到数据库中。首次运行可能需要一些时间,具体取决于您的系统大小。之后,该命令会定期自动运行,以保持数据库的最新状态。
在 mlocate 数据库建立并更新后,您可以使用命令搜索文件。该命令的基本语法如下:
locate [options] pattern
其中,是您要搜索的文件名或路径。一些常用的选项包括:
例如,要搜索名为 "example.txt" 的文件,可以使用以下命令:
locate example.txt
该命令会返回系统上所有匹配 "example.txt" 的文件路径。
mlocate 数据库默认会包含系统上所有文件的位置信息。但是,您可能并不需要搜索某些目录,比如或。为提高搜索性能,您可以编辑
/etc/updatedb.conf
文件,并添加要排除的目录:
PRUNEPATHS="/tmp /var/spool /media /var/lib/os-prober /var/lib/ceph"
保存文件后,下次运行时,这些目录就不会被添加到数据库中。
mlocate 是一个强大而高效的文件搜索工具。通过建立和维护一个文件位置数据库,它可以大大加快搜索速度,并提供更精确的结果。通过合理配置和优化,您可以进一步提高 mlocate 的性能和效率。无论您是在日常工作中搜索文件,还是进行系统管理,mlocate 都是一个非常有用的工具。
如何查找文件/文件类型/属性
你应该咨询的是Linux系统下查找文件、文件类型、属性的方法吧:-----查找文件1、find名称查找文件格式:$ find[ PATH ][ option ][ action]常用option如下:-name fileName-size[+-]SIZE #+表示大于 -表示小于-type TYPE#TYPE为f/d/l/s/b/c-perm mode#搜寻文档权限等于mode的文档,如$find ./-perm 0755-perm -mode#搜寻全部囊括mode权限的文档,如$find ./-perm-0744 则会列出权限为4755、0744的所有文件,因为-rwsr-xr-x囊括了-rwxr--r--的属性,即拥有4755权限的文件一定拥有0744的权限-perm +mode#搜寻包含任一mode权限的文档,例如$find ./ -perm +755 时,属性为-rw- --- ---的文件也会被列出来,因为他有rw的属性与时间有关的option有-mtime/ctime/atime,这三者的区别请参考本博客的另一篇文章-mtime n n天之前的一天内被修改过的文件 -mtime +n n天之前(不含n)被修改过的文件 -mtime -n n天之内(含n)被修改过的文件 例如: $find ./ -mtime 4 $find ./ -mtime -4 $find ./ -mtime +4 例2: 将过去24小时内修改过的文件列出 $find ./ -mtime 0 #0 表示现在 例3:$find / -perm +7000 -exec ls -l {} \; 说明: {} 代表有find找到的内容 -exec一直到\;是关键词,代表find额外的动作的开始到结束,在这中间的就是find的额外动作 因为分号在bash环境下有特殊意义,这里的\主要是为了跳脱分号的特殊意义 例4:$find ./ -name *http* #find命令中可以使用通配符来寻档案名 命令查找文件格式:$ locate [-ir] Keyword 例1:找出所有文件名含有passwd的文档 $ locate passwd /etc/passwd /etc/passwd- /etc/pam.d/passwd /etc/news/ 3、whereis命令格式$ whereis [-bmsu] 文档名或目录名 -b 只查找binary格式的文档 -m 只查找在说明文件manual路径下的文件 -s 只找source来源档案 -u 搜索不在上述三个项目中的其他文件 区别: find命令搜寻命令花的时间长,因为他直接在硬盘上搜索。 locate命令搜索时以数据库文档(/var/lib/mlocate/)中搜索得到的,不用直接去硬盘取数据,所以较快。 但是数据库的建立默认是在每天执行一次(即每天更新一次数据库),所以当你新建立起来档案后,在数据库更新前使用locate会找不到文件。 解决办法:可以使用updatedb命令更新数据库(这个命令一般会执行数分钟),然后再使用locate命令查询。 whereis命令也是根据数据库文档得到文件 根据上面的区别可知:一般我们先用locate 或whereis命令查找文件,在找不到的情况下才用find查找 -----查看文件的类型:file命令 -----查看文件的属性:lsattr命令
linux下搜索文件打什么命令?
which 查看可执行文件的位置。 whereis 查看文件位置。 locate 配合数据库查看文件位置。 find 实际搜索硬盘查询文件名称。 一般我不常用find命令,因为find命令比较庞大,搜索范围太大了,耗时长。 比如which吧,它是根据PATH环境变量到该路径寻找可执行文件,因而我说它是“寻找可执行文件”命令。 whereis呢?这个比较灵活了,可以加上参数来锁定精确的搜索一下,比如-b参数,就是只找二进制文件;-u参数,找没有说明文档的文件……等等。 locate就更好了,它是这里最快的命令。 可是有个缺点,它为什么快呢?因为locate是从本地的数据库文件中找(好像WINDOWS里的注册表)文件位置的,这就有缺点了,数据库文件没有更新的时候,某些没在数据库中的“文件位置”就会找不到了,呵呵。 但是没关系,你可以在用locate之前先用“updatedb”命令更新一下数据库再找。 我一般只用locate命令,因为实在太方便了 :-) 一家之言。 。 。 。 哈find就不多说了,虽然它有许多参数可以缩小搜索范围,但是它毕竟是在硬盘中整个搜索的,还是慢而且……硬盘转速限制。 ok 我就说这么多吧。
Linux下有没有像everything一样快速搜索文件的工具
一:locate命令 如果没有安装,通过 dnf install mlocate -y进行安装,locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。 当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。 即先运行:updatedb(无论在那个目录中均可,可以放在crontab中 )后在 /var/lib/slocate/ 下生成 数据库即可快速查找。 在命令提示符下直接执行#updatedb 命令即可:例如:查找相关字issue$ locate issue/etc/issue/etc//usr/man/man5/issue.5/usr/man/man5/.5二:find命令:功能:在目录结构中搜索文件,并执行指定的操作。 此命令提供了相当多的查找条件,功能很强大。 语法:find 起始目录 寻找条件 操作说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。 该命令提供的寻找条件可以是一个用逻辑运算符not、and、or组成的复合条件。 逻辑运算符and、or、not的含义为:(1)and:逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条件都满足时,寻找条件才算满足。 例如:$ find –name ’tmp’ –xtype c -user ’inin’该命令寻找三个给定条件都满足的所有文件。 (2)or:逻辑或,在命令中用“-o”表示。 该运算符表示只要所给的条件中有一个满足时,寻找条件就算满足。 例如:$ find –name ’tmp’ –o –name ’mina*’该命令查询文件名为’tmp’或是匹配’mina*’的所有文件。 (3)not:逻辑非,在命令中用“!”表示。 该运算符表示查找不满足所给条件的文件。 例如:$ find ! –name ’tmp’该命令查询文件名不是’tmp’的所有文件。 需要说明的是:当使用很多的逻辑选项时,可以用括号把这些选项括起来。 为了避免Shell本身对括号引起误解,在话号前需要加转义字符“”来去除括号的意义。 例:$ find (–name ’tmp’ –xtype c -user ’inin’ )寻找条件有以下选项:首先,下列各个选项中的n值可以有三种输入方式,假设n为20,则:+20 表示20以后(21,22,23等)-20 表示20以前(19,18,17等)20 表示正好是201. 以名称和文件属性查找。 - name ’字串’ 查找文件名匹配所给字串的所有文件,字串内可用通配符*、?、[ ]。 - lname ’字串’ 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符*、?、[ ]。 -gid n 查找属于ID号为n的用户组的所有文件。 -uid n 查找属于ID号为n的用户的所有文件。 -group ’字串’ 查找属于用户组名为所给字串的所有的文件。 -user ’字串’ 查找属于用户名为所给字串的所有的文件。 -empty 查找大小为0的目录或文件。 -path ’字串’ 查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、[ ]。 -perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711,644。 -size n[bckw] 查找指定文件大小的文件,n后面的字符表示单位,缺省为b,代表512字节的块。 -type x 查找类型为x的文件,x为下列字符之一:b 块设备文件c 字符设备文件d 目录文件p 命名管道(FIFO)f 普通文件l 符号链接文件(symbolic links)s socket文件-xtype x 与-type基本相同,但只查找符号链接文件。 2. 以时间为条件查找- amin n 查找n分钟以前被访问过的所有文件。 - atime n 查找n天以前被访问过的所有文件。 - cmin n 查找n分钟以前文件状态被修改过的所有文件。 - ctime n 查找n天以前文件状态被修改过的所有文件。 - mmin n 查找n分钟以前文件内容被修改过的所有文件。 - mtime n 查找n天以前文件内容被修改过的所有文件。 3. 可执行的操作- exec 命令名称 {} 对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令。 {}表示命令的参数即为所找到的文件;命令的末尾必须以“ ;”结束。 - ok 命令名称 { } 对符合条件的文件执行所给的Linux 命令,与exec不同的是,它会询问用户是否需要执行该命令。 - ls 详细列出所找到的所有文件。 - fprintf 文件名 将找到的文件名写入指定文件。 - print 在标准输出设备上显示查找出的文件名。 - printf 格式 格式的写法请参考有关C语言的书。 例1:查找当前目录中所有以main开头的文件,并显示这些文件的内容。 $ find . - name ‘main*’ - exec more {} ;例2:删除当前目录下所有一周之内没有被访问过的a 或*.o文件。 $ find . (- name - o - name ‘*.o’)> - atime +7 - exec rm {} ;说明如下:命令中的“.”表示当前目录,此时find将从当前目录开始,逐个在其子目录中查找满足后面指定条件的文件。 (和)表示括号(),其中的“”称为转义符。 之所以这样写是由于对Shell而言,(和)另有不同的含义,而不是这里的用于组合条件的用途。 “- name ”是指要查找名为的文件;“- name ‘*.o’”是指要查找所有名字以 .o结尾的文件。 这两个- name之间的- o表示逻辑或(or),即查找名字为或名字以 .o结尾的文件,find在当前目录及其子目录下找到这佯的文件之后,再进行判断,看其最后访问时间是否在7天以前(条件-atime +7),若是,则对该文件执行命令rm(- exec rm{ };)。 其中{ }代表当前查到的符合条件的文件名,;则是语法所要求的。 上述命令中第一行的最后一个是续行符。 当命令太长而在一行写不下时,可输入一个,之后系统将显示一个>,指示用户继续输入命令。