Find无疑是Unix操作系统中功能最强大定位文件命令工具之一,其就好像是Windows操作系统中的文件搜索命令。如下图,是Windows操作系统中的文件搜索对话框。从图中可以看到,在Windows操作系统中,也可以通过各种选项来帮助系统工程师迅速定位文件。但是,在Unix操作系统中,Find命令不仅可以实现Window操作系统下所有的查找选项,还具有很多实用的参数。笔者今天就谈谈Unix操作系统下的Find命令可以采用哪些查询条件来完成Windows操作系统所不能够完成的查找任务。
一、Find命令简介。
Find命令是Unix操作系统中的一个文件定位命令。它主要是按照递归模式,搜索整棵目录树,并根据某个条件来查找相关的文件;并对找到的文件按一定的规则进行处理。从这个官方定义中,可以看到Find命令基本上包括三个部分的内容,分别为搜索的目录树(即目录,对应Window是操作系统中的从这里寻找)、查找条件、以及查到后所需要进行的操作。在Windows操作系统中,前面两部分内容也存在。但是在第三部分内容文件的处理上就相对来说薄弱一点。在Windows操作系统中对于找到的文件只是在终端中显示出来。但是在Unix操作系统中,不仅可以把找到的文件在终端中显示出来,而且还可以进行其它复杂的操作,如删除或者备份等等。
另外,光从第二个部分即查找条件来讲,Find命令就比Windows操作系统下的查找命令参数要多的多。而且这些参数还很实用,可以帮助系统工程师迅速定位文件。这无论是在程序开发中又或者在系统维护中都有很大的价值。
二、Find命令中Windows系统没有的实用查找条件。
1、 按节点数来查找文件。
在Unix操作系统中,有一种叫做硬连接的文件管理技术,其跟Windows操作系统中的快捷方式类似,但是本质上是不同的。如在硬盘中存储着一个文件,则在Unix操作系统中可以有多个指针指向这个文件,这个就是硬连接。这跟快捷方式是不同的。如现在有一个文件A,系统工程师在Windows操作系统下建立了一个快捷方式B。此时虽然也可以通过B打开文件A,但是B与A是两个不同的文件。在B中存储的是文件A的位置信息。但是如果在Unix操作系统中,如果文件A创建了一个硬连接B,则系统工程师也可以通过文件B来打开文件A。其实,此时这两个文件是同一个文件。在Unix操作系中,是通过节点数来管理文件的。一个文件具有一个节点数,不同的文件节点数则是不同的。为此文件A与文件B所对应的节点数是相同的。
在Unix操作系统中规定,一个节点数如果有多个文件的话这个文件是不能够被删除的。故可以通过这个规则来防止重要文件被误删除。但是如果有时候系统工程师真的要删除这文件,但是又不知道这个文件到底保存在那些地方时,就需要用到这个Find命令。可以利用这个命令,根据文件的节点数来查找文件的位置。如利用命令find / -inum 12345 –print即可。其中参数-inum就表示以节点数来定位文件,后面的12345就是文件的实际节点数。在Windows操作系统中,则没有这个功能。