一、which(寻找执行文件)
参数:
-a:将所有由PATH目录中可以找到的命令均列出,不只是第一个找到的命令。
eg:用root与一般账号查询ls这个命令的完整文件名
查询cd这个命令的完整文件名
因为which是根据PATH这个环境变量所规范的路径去查询执行文件的文件名。上例中cd查不到,因为cd是bash内置的命令。
二、Linux系统会将系统中的所有文件都记录在一个数据库文件里面,而whereis与locate查找文件时,都会以此数据库的文件为准。
注:有时会发现执行此命令时,会找到已删除的文件,或者没找到刚创建的文件,是因为数据库的创建是默认一天执行一次,必要时我们可以手动更新数据库。
updatedb:根据/etc/updatedb.conf的设置去查找系统硬盘内的文件名,并更新/var/lib/mlocate内的数据库文件
这个过程需要等待几分钟。
1、whereis(寻找特定文件)
参数:
-b:只找二进制格式的文件
-m:只找在说明文件manual路径下的文件
-s:只找source源文件
-u:查找不在上述三个选项当中的其他特殊文件
eg:找ifconfig这个文件名,找出跟passwd有关的“说明文件”文件名
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小时内有改动的文件列出
eg:寻找/etc下面的文件,如果文件日期比/etc/passwd新就列出