Linux下查找文件可以使用whereis、locate、find这些命令,其中find命令最古老且功能最强,但是它比较耗时。whereis和locate命令搜索文件较快,同时功能也比较简单。
本文仅介绍whereis和locate的用法,find命令在后续的文章介绍。
whereis
事实上,whereis命令仅搜索特定类型的文件:二进制可执行文件、说明文档、源文件和其他特殊文件。
whereis命令的语法简单介绍如下:
whereis [-bm] name...
whereis name搜索文件名为name的特定类型的文件:
$ whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
上面的命令找到了名为ifconfig的特定类型的文件,其中第一个是二进制可执行文件,第二个是说明文档。
whereis -b name搜索文件名为name的二进制可执行文件:
$ whereis -b cat
cat: /bin/cat
上面的命令找到了名为cat的二进制可执行文件。
$ whereis -m cat
cat: /usr/share/man/man1/cat.1.gz
使用-m命令选项可以搜索说明文档类型的文件,上面的命令找到命令cat的说明文档。
locate
locate命令在一个数据库中通过文件名查找文件,所以其查找速度很快。
在Ubuntu 16.04中,使用下面的命令安装该软件:
$ sudo apt install mlocate
该命令的数据库不会实时更新,一般情况下是一天更新一次,当然也可以手动更新数据库:
$ sudo updatedb
locate命令的常用语法如下:
locate [-irc] name...
可以使用它直接搜索文件:
$ locate now.txt
/home/tom/now.txt
$ locate now.txt Now.txt
/home/tom/newSNow.txt
/home/tom/now.txt
/home/tom/homework/newNow.txt
这里执行了两次搜索,第一次搜索文件名中包含now.txt的文件,第二次搜索文件名包含now.txt和文件名包含Now.txt的文件。
使用-i命令参数忽略大小写:
~$ locate -i now.txt
/home/tom/newSNow.txt
/home/tom/now.txt
/home/tom/homework/newNow.txt
使用-c命令参数显示总数,而不是罗列文件:
$ locate -ic now.txt
3
使用-r命令参数使用正则表达式,下面的命令搜索所有文件名以w.txt结尾的文件:
$ locate -r "w.txt$"
which
which命令在Path环境变量中定义的路径下查找文件
which hadoop
网友评论