文章​​​​​​​目录

locate

命令介绍

语法格式

基本参数 

参考实例

1)查找1.txt相关的文件

2)查找包含pass和txt都有的文件

3)只匹配文件名,有路径的情况下不进行匹配

4)匹配不区分大小写的文件

5)使用基本正则进行匹配,并显示行数

6)查找文件最多输出5行

7)匹配查找多个包含log或者txt的文件,并显示行数

8)显示要查找的文件

9)搜索指定目录下的文件,并输出到文件里

命令总结

locate

命令介绍

还是一样先通过帮助文档了解含义

NAME
       locate - find files by name

        locate命令的功能是通过文件名称来查找文件,与find命令进行全局搜索不同,locate命令是读取这个数据文件(/var/lib/locatedb)进行查找。由于缩小了查找的范围,因此这个命令查找文件会比find要快很多。

小提示:使用locate命令时,若要同步当天建立的文件信息,需要先对数据库文件进行更新,查找前可以使用updatedb命令同步数据,再使用locate查找文件。

语法格式

        locate的语法格式相比find来说要简易些,能用到的参数只有几个。

语法:locate 【参数】查找的文件

SYNOPSIS
       locate [OPTION]... PATTERN...

基本参数 

此命令的常用参数有以下这些,以表格形式显示

-A显示匹配所有模式的文件,可使用多个匹配值选择要查找的文件
-b只能匹配文件名,有绝对路径的情况下不进行匹配
-c只显示文件数量
-d指定数据库所在目录
-e显示查找的文件
-n最多输出n个文件
-r可使用基本正则表达式
--regex可使用扩展正则表达式
-i忽略大小写

参考实例

1)查找1.txt相关的文件

先同步到数据库,直接查找文件

[root@localhost ~]# updatedb
[root@localhost ~]# locate "1.txt"
/etc/brltty/brl-ts-pb65_pb81.txt
/etc/pki/nssdb/pkcs11.txt
/home/host/1.txt
/root/.1.txt.swp
/root/1.txt
/root/1.txt.gz
/root/b_01.txt
/root/user1.txt
/root/.cache/tracker/parser-sha1.txt
/root/prometheus/1.txt
/root/test/brl-ts-pb65_pb81.txt
....

2)查找包含pass和txt都有的文件

-A参数是可以匹配2个或者多个都有的值才会显示相应的文件 

[root@localhost ~]# locate -A "pass" "txt"
/root/passwd.txt

3)只匹配文件名,有路径的情况下不进行匹配

locate加了-b的参数,查找全路径的文件,发现不进行匹配

[root@localhost ~]# locate -b "1.txt"
/etc/brltty/brl-ts-pb65_pb81.txt
/etc/pki/nssdb/pkcs11.txt
/home/host/1.txt
/root/.1.txt.swp
/root/1.txt
......
[root@localhost ~]# locate -b "/root/1.txt"

4)匹配不区分大小写的文件

-i表示不区分大小写的文件,大小写的文件都能进行匹配

[root@localhost ~]# locate -i "testdir"
/root/TESTDIR
/root/testdir

5)使用基本正则进行匹配,并显示行数

用正则进行匹配,以/var开头,以log结尾的内容 

[root@localhost ~]# locate -r "^/var/.*\.log$" -c
30

6)查找文件最多输出5行

-n可以设置显示输出的行数,要设置多少行就是显示多少行文件 

[root@localhost ~]# locate -n 5 "test"
/boot/grub2/i386-pc/cmdline_cat_test.mod
/boot/grub2/i386-pc/cmostest.mod
/boot/grub2/i386-pc/div_test.mod
/boot/grub2/i386-pc/exfctest.mod
/boot/grub2/i386-pc/functional_test.mod

7)匹配查找多个包含log或者txt的文件,并显示行数

可以使用扩展正则进行匹配查找,当然不使用正则,也可直接以要查找的关键词进行查找文件 

[root@localhost ~]# locate --regex "(log|txt)" -c 
2660
[root@localhost ~]# locate  "log" "txt" | wc -l
2660

8)显示要查找的文件

使用-e参数其实与不使用-e参数的结果是一样的,目的其实都是将结果打印显示。 

[root@localhost ~]# locate -e "samba" -n 3
/etc/samba
/etc/logrotate.d/samba
/etc/samba/lmhosts

9)搜索指定目录下的文件,并输出到文件里

[root@localhost ~]# locate -e "/etc/init"
/etc/init.d
/etc/inittab
[root@localhost ~]# locate -e "/etc/init" > a.txt
[root@localhost ~]# cat a.txt
/etc/init.d
/etc/inittab

命令总结

       有时能常用到locate命令,功能虽然没有find那么强大,但满足基本的搜索查找,还是一个很不错的命令,还可配合正则进行匹配查找,不管是在效率上还是查找的条件,熟悉运用能提升不少找文件的水准,若觉得以上内容还行的,可以点赞支持一下!

Logo

更多推荐