在linux下搜索一个文件

windows下有一个搜索工具,可以让我们很快的找到一个文件,这是很有用的然而在linux下搜索功能更加强大

which
用来查找可执行文件的绝对路径

在前面章节中已经多次用到该命令,需要注意的一点是,which只能用来查找PATH环境变量中出现的路径下的可执行文件这个命令用的也是蛮多的,有时候我们不知道某个命令的绝对路径,which一下很容易就知道了



当查找的文件在PATH变量中并没有时,就会报错
whereis 通过预先生成的一个文件列表库去查找跟给出的文件名相关的文件

语法: whereis [-bmsu] [文件名称]
-b:只找binary 文件
-m:只找在说明文件manual路径下的文件
-s:只找source来源文件
-u:没有说明档的文件



说明:whereis 笔者几乎很少用到,如果你感兴趣请深入研究
locate
类似于whereis,也是通过查找预先生成的文件列表库来告诉用户要查找的文件在哪里后边直接跟文件名如果你的linux没有这个命令,请安装软件包 mlocate ,这个软件包在你的系统安装盘里,后缀名是RPM,随后介绍的find命令会告诉你如何查找这个包如果你装的CentOS你可以使用这个命令来安装 yum install –y mlocate 。 前提是你的CentOS能连互联网至于yum这个命令如何使用,到后续章节你自然会明白如果你刚装上这个命令,初次使用会报错



这是因为系统还没有生成那个文件列表库你可以使用updatedb 命令立即生成(更新)这个库如果你的服务器上正跑着重要的业务,那么你最好不要去运行这个命令,因为一旦运行,服务器的压力会变大这个数据库默认情况下每周更新一次所以你用locate命令去搜索一个文件,正好是在两次更新时间段内,那你肯定是得不到结果的你可以到/etc/updated.conf 去配置这个数据库生成(更新)的规则。locate命令笔者用的也并不多,所以你只要明白有这么一个东西即可你用到时再去深究其用法吧
find 这个搜索工具是笔者用的最多的一个,所以请你务必要熟悉它

语法: find [路径] [参数] 下面介绍几个笔者经常用的参数
-atime +n :访问或执行时间大于n天的文件
-ctime +n :写入更改inode属性(例如更改所有者权限或者连接)时间大于n天的文件
-mtime +n :写入时间大于n天的文件

看到这里,你对这三个time是不是有些晕了,那笔者就先给你介绍一下这三个time属性

文件的 Access timeatime 是在读取文件或者执行文件时更改的文件的 Modified timemtime 是在写入文件时随文件内容的更改而更改的文件的 Create timectime 是在写入文件更改所有者权限或链接设置时随 Inode 的内容更改而更改的因此,更改文件的内容即会更改 mtime ctime,但是文件的 ctime 可能会在 mtime 未发生任何变化时更改,例如,更改了文件的权限,但是文件内容没有变化如何获得一个文件的atime mtime 以及ctime
ls -l 命令可用来列出文件的 atime、ctime mtime。
ls -lc filename         列出文件的 ctime
ls -lu filename         列出文件的 atime
ls -l filename          列出文件的 mtime   
atime不一定在访问文件之后被修改,因为:使用ext3文件系统的时候,如果在mount的时候使用了noatime参数那么就不会更新atime的信息而这是加了 noatime 取消了, 不代表真实情況反正, 這三個 time stamp 都放在 inode mtime, atime 修改inode 就一定會改, 既然 inode 改了, ctime 也就跟著要改了
继续讲find常用的参数
-name filename 直接查找该文件名的文件,这个使用最多了



-type type :通过文件类型查找文件类型在前面部分已经简单介绍过,相信你已经大体上了解了。type 包含了 f, b, c, d, l, s 等等后续的内容还会介绍文件类型的



添加新评论 »