locate
命令介绍
语法格式
基本参数
参考实例
1)查找1.txt相关的文件
2)查找包含pass和txt都有的文件
3)只匹配文件名,有路径的情况下不进行匹配
4)匹配不区分大小写的文件
5)使用基本正则进行匹配,并显示行数
6)查找文件最多输出5行
7)匹配查找多个包含log或者txt的文件,并显示行数
8)显示要查找的文件
9)搜索指定目录下的文件,并输出到文件里
命令总结
还是一样先通过帮助文档了解含义
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 | 忽略大小写 |
先同步到数据库,直接查找文件
[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
....
-A参数是可以匹配2个或者多个都有的值才会显示相应的文件
[root@localhost ~]# locate -A "pass" "txt"
/root/passwd.txt
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"
-i表示不区分大小写的文件,大小写的文件都能进行匹配
[root@localhost ~]# locate -i "testdir"
/root/TESTDIR
/root/testdir
用正则进行匹配,以/var开头,以log结尾的内容
[root@localhost ~]# locate -r "^/var/.*\.log$" -c
30
-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
可以使用扩展正则进行匹配查找,当然不使用正则,也可直接以要查找的关键词进行查找文件
[root@localhost ~]# locate --regex "(log|txt)" -c
2660
[root@localhost ~]# locate "log" "txt" | wc -l
2660
使用-e参数其实与不使用-e参数的结果是一样的,目的其实都是将结果打印显示。
[root@localhost ~]# locate -e "samba" -n 3
/etc/samba
/etc/logrotate.d/samba
/etc/samba/lmhosts
[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那么强大,但满足基本的搜索查找,还是一个很不错的命令,还可配合正则进行匹配查找,不管是在效率上还是查找的条件,熟悉运用能提升不少找文件的水准,若觉得以上内容还行的,可以点赞支持一下!