1、一些搜索命令

find 就是用来搜索文件的一个命令。 先来复习一下一些搜索的命令,见下图, which 命令是搜索路径的命令,搜索的文件在命令 echo $PATH 里出现的目录下。还有一个命令 whereis ,这个命令比较不常用,因为搜索不全。然后是命令 locate ,会显示找不到命令,需要我们安装,输入命令 yum install -y mlocate ,回车即可。 其中,yum 这个命令我们已经多次用到了,下次会仔细讲解。 上图中的命令没截到图,用视频截图代替一下,流程是一样的。命令 locate 后面要加上搜索的内容,才可以执行。然后搜索的内容一般是每天的凌晨4点自动更新一次,也可以手动更新,输入命令 updatedb ,回车即可。再次使用命令 locate ls 查看,会跳出非常多的内容。 举个例子,见下图, 上图中,查一下 123 ,跳出的结果显示,搜索内容把全部带 123 的路径都显示出来了,不管是文件还是目录。这就是 locate 命令,比较模糊不精准的搜索。 以上,whereis 和 locate 在平常工作中使用的较少,做个了解即可。

2、find命令

(1).搜索时只知道目录下的文件名,不知道路径,

见下图, 上图中的 f 就是文件类型中的 - ,为普通文件的意思。 举个例子,输入命令 find /etc/ -type l ,可以搜到很多文件类型为软链接的文件,见下图, 可以使用命令 ls -l /etc/rc2.d ,再确认一下是否是软链接文件, 可以看出,结果是没错的,其他例子见下图,

(2). -mtime 、 -ctime 、 -atime 用法

见下图, 其中,命令 stat 是用来查看文件的具体信息,比命令 ls 来的详细。使用这个命令主要是为了查看下面红色框框中的三个时间。mtime 就是最近更改时间,atime 就是最近访问时间,ctime 就是最近改动时间。 举个例子,更改一下文件 2.txt 的用户权限,输入命令 chmod 700 2.txt ,再使用命令 stat 2.txt 查看,可以看到最近改动时间变了。将语言改为英文,输入命令 LANG=en ,显示的时候就比较明显。此时更改的是文件用户权限,ctime 。 再举个例子,更改文件内容,见下图,给文件 2.txt 追加内容后,发现更改的是 mtime 。

至于命令 echo ,可以从后面的例子看出来,它是直接显示引号内容的。还有,如果更改了文件内容,ctime 和 mtime 的时间就会是一致的。因为文件内容的更改,也是文件更改的一部分。 现在来访问一下文件 2.txt 内容,见下图,可以看出 atime 的时间变了。 这边,使用 stat 命令就是为了查看这3个时间的,理解了这3个时间,就可以通过 find 命令来调用这3个时间。

输入命令 find /etc/ -type f -mtime -1,查看的是一天以内更改过文件内容的普通文件,数量比较少。 +1 就是1天以前更改过文件内容的普通文件,这个就非常多了。 上面的 +1 和 -1 ,就这两个情况,没有 =1 的情况。 另外,上面的例子,也可以将 mtime 替换成 atime 和 ctime 查找,情况是一样的。 命令 find /etc/ -type f -mtime -1 后面也可以继续增加条件,是并且的意思,做精细化查找。见下图, 既然有并且的命令,也就会有或者的命令,在命令里面加上 -o 即可实现或者的情况。输入命令 find /etc/ -type f -o -mtime -1 -o -name ".conf" , 是或者的意思。命令执行完,显示的内容较多,就不附图了。工作中一般也不会这样用。 查找一个小时以内,更改过文件的命令,见下图, -mtime -1 为一天,-mmin -60 为一个小时,每个人操作的时间不一样,我这边显示的就2个文件,还都是一个小时内发生的。通过时间对比可以看出来,这2个文件确实是1个小时内发生更改的。 命令 find /root/ -type f -mmin -120 -exec ls -l {} ; 中, -exec ls -l 是 find 命令的一个选项,其中 {} 是选择其中一项的意思,; 这个后面会说到。现在只要记住这个命令的格式即可。 现在看一下另一种用法,见下图, 上图中,mv 命令是改名字的意思,给文件加上 .bak 的后缀。 查找文件大小的命令,见下图, “+” 号是大于的意思,“-” 号是小于的意思。查找出来的结果再做个验证,见下图, 上面结果是对的。k 是 KB 小写的,也可以查找单位为 MB 的,这边要用大写 M ,若输入小写的 m ,会报错,见下图, 上图中,注意红色框框的内容,还尝试输入了单位为 b 和没有单位的情况,得出的结果都是不对的,说明要输入正确的单位才可以得出正确的结果。

(3).查找文件的硬链接

举个例子,见下图, 先查看文件的 inode 号码,再通过 find 命令,查找相同 inode 号码的文件,即可轻松找出文件。

总结: -type 文件类型:d、f、l、s、b、c、p -atime 、-mtime 、-ctime 最近访问时间、最近更改时间、最近改动时间,跟上天数,+大于,-小于 -amin 、-mmin 、-cmin 最近访问时间、最近更改时间、最近改动时间,跟上小时数,+大于,-小于 -size 文件大小,后面跟上正确的单位 k 、 M -o 条件为或者的意思 -exec 满足条件执行 -name 文件名,可精确文件名,也可跟上“”模糊文件名查找