find命令:

find命令是用于搜索文件的,which是在环境变量中搜索,whereis是在准备好的库里搜索,locate是通过数据文件进行搜索。

在最小化安装的系统中一般locate命令是需要自己安装的,,安装的命令是:yun install -y mlocate

Linux的find命令与文件名后缀_第1张图片


安装完后,这时locate命令还无法使用,因为locate依赖的数据文件还没有生成,这个文件相当于这个命令的数据库,你系统上文件的路径都会存放在这里,然后locate命令就是通过这个文件去搜索你指定的文件,这时需要使用updatedb命令生成一下此数据文件,这个命令也可以用于更新此文件,一般此文件会在凌晨四点自动更新:

wKiom1ngUh_jBr-qAAIRhAQx6Vc900.png

wKioL1ngT2mD_hPbAAGYPn-NS_g047.png


从搜索结果可以看出,只要是带有Test1的文件路径都会被检索出来,这属于是一种模糊搜索,并不是精确搜,所以locate命令使用的比较少。

  最常使用的是find命令,find最简单的用法是指定一个范围这个范围可以是系统目录或文件夹,然后指定具体的文件名称,例如我要在etc目录下找sshd_config文件:

wKiom1ngUiDCyZr2AAG4JxZYRpA895.png


使用通配符*可以进行模糊搜索:

Linux的find命令与文件名后缀_第2张图片


  指定寻找的是目录需要加-type d,指定寻找的是文件则需要加-type f(-)-type表示的就是文件类型,所以可以使用-type这个条件参数指定所要检索的文件类型:

Linux的find命令与文件名后缀_第3张图片


指定寻找的是软链接文件需要加-type l



指定寻找的是块设备文件需要加-type b

Linux的find命令与文件名后缀_第4张图片


指定寻找的是字符串设备文件需要加-type c

Linux的find命令与文件名后缀_第5张图片


指定寻找的是通信文件需要加-type s

wKioL1ngT3mQYtQWAAERqoB3MX0621.png


stat命令是查看一个文件或目录的详细信息的:Linux的find命令与文件名后缀_第6张图片Linux的find命令与文件名后缀_第7张图片

更改了文件的内容-ctime一定会改变,但改文件的权限-mtime是不会改变的。


find命令中的-atime选项是用来指定所要查找的文件的最近访问时间,例如我要在root目录中找一天以内访问过的文件,或一天以外访问过的文件:

find /root/ -type f -atime -1  //一天以内

wKioL1ngT36wkMKtAAG27Hk-h-A456.png


find /root/ -type f -atime +1  //一天以外

Linux的find命令与文件名后缀_第8张图片


find命令中的-mtime选项是用来指定所要查找的文件的最近更改或创建时间,例如我要在root目录中找一天以内更改过的文件,或一天以外更改过的文件:

find /root/ -type f -mtime -1  //一天以内

wKioL1ngT4DCGHqeAAGjLCjwkDE380.png


find /root/ -type f -mtime +1  //一天以外

Linux的find命令与文件名后缀_第9张图片


find命令中的-ctime选项是用来指定所要查找的文件的最近改动时间,例如我要在root目录中找一天以内改动过的文件,或一天以外改动过的文件:

find /root/ -type f -ctime -1  //一天以内

wKioL1ngT4LhsEAJAAGWPSvhiWQ661.png


find /root/ -type f -ctime +1  //一天以外

Linux的find命令与文件名后缀_第10张图片


如果在find命令里加多个参数条件的就是并且的意思,也就是说查找的文件要满足这些指定的条件。

例如:find /etc/ -type f -mtime -1 -name *.conf

这条命令的意思是:查找etc目录下的文件,此文件的最近更改时间或创建时间是一天以内的,并且此文件的后缀必须是conf

wKiom1ngUjzCLxqZAAJf5zodtDM889.png


想要这些参数条件起的作用不是并且而是或者的话,需要在参数条件加 -o

例如:find /root/ -type f -o -mtime -1 -o -name *.conf

这条命令的意思是:查找root目录下的文件,或者查找最近更改时间或创建时间是一天以内的文件,或者此文件的后缀是conf的,只要满足其中一个条件都会被查找出来。

Linux的find命令与文件名后缀_第11张图片



使用find命令查找硬链接文件:

命令如下:

find / -inum inode

例如:我要找a_123.txt的硬链接文件,首先得查看这个文件的inode号,然后将inode号放在命令的末尾:

Linux的find命令与文件名后缀_第12张图片


使用find命令查找root目录下一小时以内更改过的文件:

find /root/ -type f -mmin -60

wKioL1ngT4yTKv9JAAINiL3TS8A767.png

那个表示分钟的数字可以改变,例如想查看两个小时以内的就使用-120,以此类推。


使用find命令查找文件的同时执行ls -l命令:

命令如下:

find /root/ -type f -mmin -60 -exec ls -l {} \;

wKiom1ngUkOA1QsSAAG_kgl0ZJE967.png

{}表示的是查找到的批量文件里其中之一的意思。


使用find命令查找文件的同时执行mv命令:

命令如下:

find /root/ -type f -mmin -60 -exec mv {} {}.bak \;

Linux的find命令与文件名后缀_第13张图片

将查找出来的文件都重命令了


find命令中的-size参数条件可以指定查找文件的大小,例如:查找root目录下大于10k的文件或者查找root目录下小于10k的文件。

命令如下:

find /root/ -size +10

wKioL1ngT5CSztTWAAEoHEoBgQI568.png


find /root/ -size -10

Linux的find命令与文件名后缀_第14张图片


同样的可以同时执行ls -lh命令查看检索出来的文件的大小:

命令如下:

find /root/ -type f -size -10k -exec ls -lh {} \;

Linux的find命令与文件名后缀_第15张图片


使用M单位的话M要大写:

find /root/ -type f -size -10M -exec ls -lh {} \;

Linux的find命令与文件名后缀_第16张图片


文件的后缀:

Linux中是严格区分大小写的,所以a不等于A。在Linux中的文件后缀并不严谨,可以随意自定义后缀名。而在Windows中,文件的后缀名是绑定着执行程序的。所以在Linux上文件的后缀并不代表这个文件的类型。

Linux中可以通过LANG变量更改当前环境的语言,例如更改为英文就是:LANG=en

Linux的find命令与文件名后缀_第17张图片