天天看点

Linux命令与文件的查询

一、which(寻找执行文件)

参数:

-a:将所有由PATH目录中可以找到的命令均列出,不只是第一个找到的命令。

eg:用root与一般账号查询ls这个命令的完整文件名

Linux命令与文件的查询

查询cd这个命令的完整文件名

Linux命令与文件的查询

因为which是根据PATH这个环境变量所规范的路径去查询执行文件的文件名。上例中cd查不到,因为cd是bash内置的命令。

二、Linux系统会将系统中的所有文件都记录在一个数据库文件里面,而whereis与locate查找文件时,都会以此数据库的文件为准。

注:有时会发现执行此命令时,会找到已删除的文件,或者没找到刚创建的文件,是因为数据库的创建是默认一天执行一次,必要时我们可以手动更新数据库。

updatedb:根据/etc/updatedb.conf的设置去查找系统硬盘内的文件名,并更新/var/lib/mlocate内的数据库文件

Linux命令与文件的查询

这个过程需要等待几分钟。

1、whereis(寻找特定文件)

参数:

-b:只找二进制格式的文件

-m:只找在说明文件manual路径下的文件

-s:只找source源文件

-u:查找不在上述三个选项当中的其他特殊文件

eg:找ifconfig这个文件名,找出跟passwd有关的“说明文件”文件名

Linux命令与文件的查询

2、locate

参数:

-i:忽略大小写的差异

-r:后面可接正则表达式的显示方式

eg:找出系统中与passwd有关的文件名

1、locate的使用更加简单,直接在后面输入“文件的部分名称”后就能得到结果,比如上例,在完整文件名当中,只要有passwd在其中,就会被显示出来。

2、因为使用locate来寻找数据时,是由已创建的数据库/var/lib/mlocate/里面的数据所查找的,比较快。

三、find

find是在硬盘中寻找数据,可能速度较慢。

参数:

与时间有关的参数

 -mtime n:n为数字,意义为在n天之前的“一天之内”被更改过的文件

-mtime +n:列出在n天之前(不含n天本身)被更改过的文件名

-mtime -n:列出在n天之内(含n天本身)被更改过的文件名

-newer file:file为一个存在的文件,列出比file更新的文件名

eg:将过去24小时内有改动的文件列出

Linux命令与文件的查询

eg:寻找/etc下面的文件,如果文件日期比/etc/passwd新就列出