linux下文件的查询(find,which,whereis,locate)

来源:互联网 发布:优化脱硫指标 编辑:程序博客网 时间:2024/05/21 11:32

我们经常需要知道文件在哪里,才能对该文件进行一些修改或者其他的操作。有些软件的配置文件名字都一样,只是放的地方不同,我们需要找出他们的完整文件名,才能对他们进行操作。

一,脚本文件名的查询:

which(寻找“执行文件”)

这个命令是根据PATH这个环境变量所规范的路径去查询“执行文件”的文件名。所以,他只是找出执行文件而已!which后面要接完整的文件名,如果加上-a,则可以列出所有的可以找到的同名执行文件。

命令参数:

-n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。

-p  与-n参数相同,但此处的包括了文件的路径。

-w  指定输出时栏位的宽度。

-V  显示版本信息


例子1:查找命令路径


例子2:用which查找which


会有两个 which ,其中一个是 alias 这就是所谓的【命令别名】,意思是输入 which 会等于后面接的那串命令。

例子3:用which查找cd


cd 这个常用的命令找不到。这是因为 cd 是 bash 内建的命令!但是 which 默认是找 PATH 内所规范的目录,所以找不到。


二,文件名的查找

现在我们来看看怎么查找文件。在linux下也有非常优秀的查找命令。比如whereis,

find,locate。find的查找速度比较慢,所以我们会先用whereis或者locate来检查,如果找不到,再用find查找。因为whereis和locate是利用数据库来查找数据的,所以相当快,而且并没有实际查询硬盘,比较节省时间。

whereis(寻找特定文件)

用法:whereis 【-bmsu】 文件或目录名

命令功能

whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis 程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。





命令参数:

  -b   定位可执行文件。

-m   定位帮助文件。

-s   定位源代码文件。

-u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。

-B   指定搜索可执行文件的路径。

-M   指定搜索帮助文件的路径。

-S   指定搜索源代码文件的路径。


例子:只找出更passwd有关的“说明文件”文件名。



locate

使用方法:locate 【-ir】 keyword

命令参数:

   -i:忽略大小写的差异。

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

locate的使用非常简单,后面直接跟“文件的部分名称”,即可查询。

locate和whereis是通过数据库来查询的,所以速度很快,但是也有限制,因为数据库默认每天刷新一次,如果你新建的文件是查不到的,你可以手动更新数据库,用“updatedb”即可。


现在我们来看看今天的重点find命令:

find [PATH] [option] [action] 


参数1:与时间有关的参数:-atime , -ctime , -mtime

下面以-mtime说明。

-mtime n :列出在n天前的那一天被更改过的文件名。

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

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

-newer file:file为已经存在的文件,列出比file还要新的文件。


参数2:与用户或用户组名有关的参数

-uid n :n为数字,这个是用户的账号ID,即UID。

-gid n :n为数字,这个是用户组的账号ID,即GID。

-user name:name为用户账号的名称。

-group name:name为用户组名。

-nouser :寻找文件的所有者不存在/etc/passwd的人。(如果你将系统里面某个账号删除了,但是该账号在系统中创建了很多文件,就会出现无主孤魂的文件了。此时你就可以用这个-nouser来找出该类型的文件。

-nogroup :寻找文件的所有用户不存在/etc/group中的文件。


参数3:与文件权限及名称有关的参数:

-name filename:查找文件名为filename的文件。

-size [+-]SIZE:查找比SIZE还要大(+)或者小(-)的文件。

例如:找比50kb大的文件:



-type TYPE:查找文件类型为“TYPE”的文件。例如:

b - 块设备文件。

d - 目录。

c - 字符设备文件。

p - 管道文件。

l - 符号链接文件。

f - 普通文件。


-perm mode:查找文件权限“刚好等与mode”的文件。mode类似于chmod的属性值。


-perm -mode:查找文件权限“必须要全部包含mode的权限”的文件。比如我们要找

-rwxr--r--,即0744的为文件,使用-perm -0744,如果有一个文件权限为-rwxr-xr-x,即4755,也会被列出来。


-perm +mode:查找文件权限“包含任一mode的权限”的文件。道理同上。

例如:找出、bin目录下只要具有SUID和SGID的文件就列出来:


参数4:其他可经行的操作:

-exec command :command为其他命令,-exec后面可再接其他的命令来处理查到的结果。

find的特殊功能就是能够进行额外的动作(action)。


我们将上边的例子用图解方式解释一下:


该例子中特殊的地方有“{}”和“\;”,还有-exec关键字:

{}代表的是“由find找到的内容”,find找到的结果会被放到{}中;

-exec一直到“\;”是关键字,代表find额外命令的开始(-exec)到结束(\;),本例中“ls -l {} \;”就是;

之所以在;前面加个\,是因为在bash环境下“;”是有特殊含义的,所以用“\”来转义。                                                                   



find还可以利用通配符来找寻文件名。

 


到这里find的一些基本操作就完了,今天的学习就到这了。

                                                                                                                                               







0 0
原创粉丝点击