00:00
接下来我们要介绍的呢,是搜索查找类的命令,呃,这些命令其实在实际的工作应用当中还是非常常用的,首先我们来介绍的那就是著名的find啊,一看这个名字我们就知道这当然就是要进行查找了啊,它的特点呢,就是可以从指定的目录向下递归的便利各个子目录,然后将满足条件的对应的文件显示在我们的控制终端,所以这个find命令其实还是非常的强大的啊,因为它可以递归的查找,非常快速的帮我们找到想要的内容。那它基本语法也很简单,那就是find后面加上当前的搜索范围。也就是说在哪个目录下边开始查找,指定的目录下边开始查找啊,当然如果不指定也可以,那就是默认从当前路径开始查找。后边呢,会有一些选项,这里边我们看到选项可以有什么呢?呃,可以有杠内表示,按照指定的文件名,诶,或者给一些查找的模式来进行文件的查找,就是按照文件名称是否满足对应的式来选择它是否把它查出来,另外呢,还可以杠user,那就是指定用户的名称,还可以杠size,指定文件的大小,诶那这个大小呢,就是你可以比某个值大,也可以比某个值小,这个是一般用加号减号来表示。
01:28
后边可以有一个数字,然后还可以带单位啊,像这个BCWKMG啊,这些就是我们常用的一些表示文件大小的单位都可以使用,当然了find其实它可以选择的选项是非常非常多的,比如说像呃时间范围啊,对于文件按照时间范围选择也是可以做的啊,那一般我们常用的可能就是这三种,我们观察的就是当前的文件名称,按照名称去选择,或者按照用户去选择,或者按照大小去选择。啊,接下来我们就来看一看具体的实际应用。
02:03
我们可以看到在当前的目录下边啊,那有很多的文件,也对应着有一些目录,那接下来呢,我们就来做一个查找,比方说啊,我们想要去在当前目录下啊,那就是杠root啊,如果不给的话,默认当然就是就是点了就是当前的这个目录了,比方说我们想要去查找。Name等于in。呃,对应的文件,所以我们就看到了,除了当前下面有一个infer这个非常明显之外,另外呢,在隐藏的点local目录下边,Shell下面,Trash下边还有一个叫做INF的文件,我们一下子把下面所有的子目录里面的东西全找出来了。好啊,那如果说我们还想比方说想要确认一下的话,我可以touch,在公共这个目录下边,我创建一个info。文件,然后接下来我们重新执行上面的内容,Find,杠、name info,就可以把这三个文件全部找出来啊,当然了,就是如果说我们不省略对应的路径的话,那就是杠root,给绝对路径也可以,给相对路径也是可以的。
03:12
In,哎,那这样也可也可以查出来,那如果说我们限定它只能是查当前的。公共这个子目录的话,限定路径,哎,那当然就能只能查到我们刚刚创建的这个文件了,所以整体来讲使用还是非常简单的,这里需要说的是,我们这里不光能够去查找对应名字的文件,还可以按照。他名字的模式来查找,哎,比方说我们最常用的用星号就可以表示一个通配符,哎,所有类似的文件都可以指定,比如说我们经常用这种方式来查找什么呢?哎,查找某些具有固定后缀名的文件,比方说像这里我们有CFG。那这里我就可以直接find啊,然后当前的目录root后边跟上当前的name,哎,注意这里如果是星号点CFG的话,我们加一个引号把它引起来。
04:10
方便这个解析CFG,诶,我们就可以看到了,不光找到了当前root下边的两个能够看得到的配置文件,而且还可以找到隐藏目录里面对应的一些CFG配置文件啊,所以这个就看的会非常的明确啊。呃,那除了使用名称去做匹配,杠name去做匹配之外,注意这就是这个杠name,前面的就是路径,后边的那就是相当于匹配的模式了。那接下来我们还可以使用杠user,那就是find,比方说我们可以到home下面去找。我们之前不是有Tony这个用户吗?来看看Tony这个用户有多少文件啊,我们看到所有to尼的文件其实都是在Tony他的主目录下边产生的,我们之前也没有创建文件,那就都是隐藏文件了,诶,所以这个其实还是比较简单的啊,就是跟这个用户相关的,这个用户所创建的文件属主是Tony的文件。
05:10
啊,那除了这些之外呢,还有就是可以加这个杠size,杠size的话,我们指定的就是文件的大小,按照文件大小来选择,这个也非常的常见啊,非常常用,我们直接换一,呃,我们先看一下当前目录下边啊这些文件哪些比较大,比方说我们想找一个这个大文件怎么看呢?呃,LL是可以看到当前它的大小的,这个如果看着觉得不是特别的舒服的话,我们也可以。呃,杠L啊,加一个H参数更加人性化的解释啊,我们看到这里边,呃,当前这个文本文件有14兆这么大,所以这个当然是非常巨大了,非常庞大了,比方说我们现在想选选择筛选当前root目录下边。Size超过了十兆的所有文件,哎,那我可以选择加十兆,这就表示大于等于十兆所有文件。
06:04
接下来我们可以看一下啊,直接就把对应的这个文本文件筛选出来,那如果这个选择范围稍微的小一点的话,比方说两兆以上的话,诶,那我们看除了这个文本文件,可能还有一些其他的文件也被。查,查询到,列举出来,这就是关于find的最常见的一些用法。除了find之外呢,我们还有定外一个比较常用的定位文件路径的命令,叫做locate locate我们知道本身就是定位的意思,那么locate呢,它跟find稍微有点不同,因为find我们其实就是直接在这一个当前目录下边所有硬盘存储的数据文件里边去寻找的,而这里所谓的locate呢?他其实不是在我们硬盘里面去找。啊,它是当前我们系统里边事先就已经建立好了所有文件名称和它对应路径的一个关系的数据库,一个locate数据库,所以我们现在如果使用locate命令去查找的话,是在这个数据库里面去查找,所以它查起来就速度特别的快。
07:14
因为他不需要去遍历整个文件系统,只要在数据库里面查到对应的值就可以了。啊,当然这里边就会有一个问题,就假如说我们当前的这个目录文件系统里面发生了改变,新创建的文件,或者做了一些修改,做了一些调整移动,那这个数据库是不是会实时更新呢?诶,不是的,一般情况默认情况下啊,这个数据库是每天会自动更新一次,那这个就不够实时了,所以为了保证查询结果一定是准确的,那我们在。查找之前,定位之前应该先去做一个更新操作,那这个更新操作是什么呢?哎,就叫做update DB,直接执行一个这个就可以了啊,当然这里面如果我们不想去做这个更新操作的话,也可以查啊,或许也可以查得到。
08:05
啊,所以接下来我们可以直接在命令行里边做一个尝试啊,那首先我们先来做一个update DB啊,当然第一次去执行这个update DB有可能啊,我们之前可能没有做更新,而且发生变化,更改这个文件比较多,可能会执行起来比较慢啊,这个执行完之后,后面再执行就会比较快了,它其实就是要把我们的信息做一个更新写入嘛,那如果说我们这里边不更新,能不能查到对应的信息呢?如果在这段时间我们没有做相应的更改的话,可能查到也是对的,也能够查得到,但是呢,最好我们先做一个更新啊,接下来我们就可以做一个locate,当然了,Locate的话,后面可以查我们感兴趣的所有的内容,比方说。我们就对这个tmp这样一个探文件夹比较感兴趣,我查找一下,注意这个查找的呢,就相当于也是一个模式,就是只要包含了tmp这三个字母的所有的文件夹啊,文件都会给我们列举出来,我们直接敲一下可以看到,诶这里面就特别的多,你看这里面还有一些这个压缩文件啊,啊,那对应的还有这个BTMPWTMP,那当然了,我们最关心的。
09:17
应该就是最初找到的一个根目录下边的,诶,这个找到的东西特别的多,我们看到最先找到的就是根目录下的tmp文件夹,所以这个其实还是非常简单的啊啊呃,那或者我们可以找一下。Locate一下,呃,我们当前目录下边有一个文本文件,很大的一个文本文件啊,我们还记得叫XZHDX啊,那我们直接locate一下,诶,我们看到直接就找到了root下边的这样一个TXT文本文件啊,所以这个命令还是非常好用的啊,非常简单的。呃,这里需要多介绍一句的,就是不光我们可以查找文件和目录,那另外呢,其实对于我们当前很多Linux里边的命令,我们也可以去做一个定位,诶怎么样去定位呢?这个有点像之前我们找这个,呃,用户的时候啊,当前用户是谁的那个who mi,那现在用的是which。
10:15
诶,我们直接which加上一个命令,比方说我们看一下这个LS,哎,那我们看到直接就能看到啊,当前它是一个我们所说的as是一个别名,然后它位于哪里呢?位于user b下边的LS啊,那另外我们同样也可以看一下which当前的locate是在哪里。我们看到就是在user病下边的lo。当然了,本身which也是一个命令,那我们说能不能套娃呢?Which which可以吗?哎,当然这也是可以的啊,所以我们看到which本身它也是一个别名,哎,那它存在两个地方,一个在user病alis下边,另外一个user病which下边啊啊,那那这就是我们能够去查找当前的命令到底在哪里的这样的一个命令啊啊,那同样还有另外一个类似的叫做where is啊,Where is locate。
11:06
那这个就是标准的去查找lo的这个命令到底位于哪里的一个命令了啊,Where意思啊,呃,我们在有时候啊,需要去了解一个命令到底在哪放着的时候,可能用这个which where is都可以去进行一个查找。
我来说两句