Linux文件查找命令详解

对于文件查找,咱们最好用的仍是属于find命令了,在说find命令以前,先把另外几个查找命令介绍一下。数据库

目录

0x01 查询命令介绍3d

0x02 find命令介绍code

0x01 查询命令介绍

在介绍以前,首先先了解一个特殊变量——PATHblog

PATH下存放着命令所在的路径,咱们在执行命令的时候先会在PATH变量中从前到后挨个路径进行查找,找到一条以后就直接中止了,因此就须要把想要先生效的路径放到前面,每个路径中间使用冒号进行分隔get

file

which命令博客

经过which命令,咱们能够找到某一个命令所在的位置,它是经过PATH路径进行查询的it

file

whereis命令test

whereis命令也能够跟which同样搜索路径,可是他还会搜索一些其余的内容,它也是经过PATH路径进行查询的变量

file

若是只想搜索二进制命令的话,须要增长 -b 参数date

file

locate命令

locate也能查询命令的相关路径以及帮助等,可是它不是从PATH路径中进行遍历的,它是从Linux中的一个数据库mlocate.db进行查询的,mlocate.db数据库位于/var/lib/mlocate/mlocate.db,因为它所展现的内容太多,因此这里我使用 -n 参数来指定显示的行数

file

那咱们再举一个例子来进行查询

咱们在root目录下建立一个balabala.txt的文件

file

而后使用下列命令来进行查询

locate balabala

file

明明存在这个文件为何查不到呢?

这是因为locate进行查找是在mlocate.db数据库进行查找的,可是咱们刚刚建立的这个文件并不在这个数据库中,因此咱们须要使用updatedb进行更新数据库

file

在更新完后就能够正常查询到了,通过查询能够得知updatedb会天天自动执行一次

file

可是这个命令咱们通常是不会用到的

0x02 find命令介绍

与上面的几个命令相比,find的速度是最慢的,由于find是从硬盘里进行查找的,可是find命令也是咱们最经常使用的一个命令,在寻找咱们想要的文件时是最快捷的。

对于find命令的使用有一个大体的公式

find 要查找的位置 [限制条件] 要查找的文件名

举个例子,从根目录下寻找全部的文件名中包含balabala的文件

file

若是想在查询完成以后,再接着对它执行一些命令的话,在后面再加上 -exec参数就能够了

find / -type f -name "*balabala*" -exec ls -l {} \;

file

-exec参数的后面跟上须要执行的command命令就能够了,最后以分号做为结束的标志,可是考虑到各个系统中的分号可能会表明不一样的意义,因此加上了反斜杠进行转义。

其中花括号的含义是表明find命令所查询到的内容,而且花括号两边都是须要有空格的

这条命令还有一种等价的写法,那就是利用管道xargs

xargs有两个做用,一个就是加-n参数对内容进行分组,另外一个做用就是获取前一条命令的输出,而后做为输入传给后面的命令,这个听起来跟管道符是同样的,可是若是没有xargs和管道符的配合是不能实现部分命令的执行的。

看一下后面的这个例子就明白了

file

若是没有管道符和xargs的配合,后面的命令将直接是在当前目录下直接执行,也就是说从管道符过来的数据,ls根本没有理会,而是按照本身的意愿执行了本来的功能。

顺便再把xargs的分组功能介绍一下

file

再举一个例子来理解一下上面的这个内容

咱们查找一下当前目录下的全部以 .txt 来结尾的文件,而后并将其内容进行输出

file

咱们也能够按照修改时间对文件进行查找,加入 -mtime 参数就能够了

为了方便find的按时间查找,咱们用下面的命令来生成一批文件

首先先了解一下date命令

file

若是想要修改时间的话,咱们可使用 date -s 来修改时间,可是绝对不建议你们这样改,这样可能会致使某些功能出现问题。

而后咱们生成一批文件,从十月十五号到十月二五号天天建立一个文件

注意后面的时间都是以今天是十月二十号做为标准的

for n in `seq 15 20`;do date -s "2019/10/$n";touch test_$n.txt;done

file

file

咱们接着说find命令的按时间查询

查询三天之前建立的文件

find . -type f -name "*.txt" -mtime +3

file

查询第三天建立的文件

find . -type f -name "*.txt" -mtime 3

file

查询最近三天的文件

find . -type f -name "*.txt" -mtime -3

file

经常使用到的查找命令就是这些了,若是有其余须要的话,再查看帮助文件就能够了。

本文由博客一文多发平台 OpenWrite 发布!