背景
Linux 有四个常用的查找命令:locate
、whereis
、which
和 find
本人最常用第四个,每次想用时都需要新学,这次大致码好后以绝后患。下面将依次介绍:
locate命令
这个命令将遍历整个文件系统找到该关键词的每一次出现位置,所以结果繁多
locate keyword
locate 使用的数据库通常每天更新一次,所以如果在搜索最近创建的东西,它可能不会在搜索中返回,可以使用updatedb命令手动更新locate命令的数据库
whereis命令
在Linux中,可执行文件被称为二进制文件,如果想定位一个二进制文件,whereis
比locate
更加有效
whereis binary
这个命令将返回二进制文件的位置,以及它的源代码和手册页,如果有的话
which命令
Linux中的PATH
变量存放着操作系统,寻找在命令行中执行的命令的目录
which binary
which
命令在PATH中找到一个二进制文件。如果在当前PATH中没有找到该二进制文件,它就什么也不返回
这些目录通常包括/usr/bin
,但也可能包括/usr/sbin
和其他一些目录。
find命令
最强大的搜索命令是find
命令,可以用它在任何指定的目录中搜索,并使用各种参数。
精确查找
基本语法是:
find directory options expression
假设有一个名为test.txt
的文件,现在需要找到它但是不确定具体位于哪个目录下,则可以执行下面的命令,从文件系统的顶部/
开始搜索:
find / -type f -name test.txt
具体含义为:
-
/
表示从文件系统的顶部开始搜索 -
-type
是要寻找的东西的类型。f
表示文件,b
表示块状特殊设备文件,c
表示字符特殊设备文件,d
表示目录,l
表示符号链接(这里如果不确定文件类型,不写也没关系) -
-name
是要寻找的东西的名字,结果将完全匹配
这里会搜索每一个目录,并从其顶部开始查找,需要花费一定的时间(假设知道该文件位于某个目录下,可以通过指定目录来加快速度):
time find /某个目录的地址 -type f -name test.txt
这里使用了time
命令,可以看到每个命令花费了多少时间
模糊查找
可以通过使用通配符来实现(匹配多个字符),并有几种不同的形式。
这里假设有一个包含cat、hat、what和bat文件的目录:
-
*
匹配多个字符。*at
将会匹配:cat、hat、what、和 bat -
?
匹配单个字符。?at
将会匹配:cat、hat、bat,但不匹配what -
[]
匹配出现在方括号内的字符。[c, b]at
将会匹配cat和bat。
find /某个目录的地址 -type f -name test.*
我常用的查找格式: find 指定起始目录 查找条件 操作
find /home/账号名 -iname ***.*** (精确查***.***文件)
find /home/账号名 -type f | grep "/\\." (查找所有隐藏文件)
find /home/账号名 -name 123.*** (精确查找带123的文件,任意格式均可)
学习了很多遍后,好记性不如烂笔头。特别感谢:Linux系列之查找命令