在linux下搜索一个文件

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

  1. ‘which’ 用来查找可执行文件的绝对路径。

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

  1. ‘whereis’ 通过预先生成的一个文件列表库去查找跟给出的文件名相关的文件。

语法: whereis [-bmsu]  [文件名称]

‘-b’ : 只找binary 文件

‘-m’ : 只找在说明文件manual路径下的文件

‘-s’ : 只找source来源文件

‘-u’ : 没有说明档的文件

说明:whereis 阿铭几乎很少用到,如果您感兴趣请深入研究。

  1. ‘locate’ 类似于’whereis’, 也是通过查找预先生成的文件列表库来告诉用户要查找的文件在哪里。

后边直接跟文件名。如果您的linux没有这个命令,请安装软件包 ‘mlocate’, 这个软件包在您的系统安装盘里,后缀名是RPM,随后介绍的find命令会告诉您如何查找这个包。如果您装的CentOS您可以使用这个命令来安装 yum install -y  mlocate 前提是您的CentOS能连网。至于yum这个命令如何使用,到后续章节您自然会明白。如果您刚装上这个命令,初次使用会报错。

[root@localhost ~] # locate passwd
locate: can not open `/var/lib/mlocate/mlocate.db': No such file or directory

这是因为系统还没有生成那个文件列表库。您可以使用 updatedb 命令立即生成(更新)这个库。如果您的服务器上正跑着重要的业务,那么您最好不要去运行这个命令,因为一旦运行,服务器的压力会变大。这个数据库默认情况下每周更新一次。所以您用locate命令去搜索一个文件,正好是在两次更新时间段内,那您肯定是得不到结果的。您可以到/etc/updated.conf 去配置这个数据库生成(更新)的规则。’locate’所搜索到的文件列表,不管是目录名还是文件名,只要包含我们要搜索的关键词,都会列出来,所以’locate’不适合精准搜索,这个命令阿铭使用的也并不多,您只要明白有这么一个工具即可,用到时再去深究其用法吧。

  1. ‘find’ 这个搜索工具是阿铭用的最多的一个,所以请您务必要熟悉它。

语法 : find  [路径] [参数] 下面介绍几个阿铭经常用的参数

‘-atime +n/-n’ : 访问或执行时间大于/小于n天的文件

‘-ctime +n/-n’ : 写入、更改inode属性(例如更改所有者、权限或者链接)时间大于/小于n天的文件

‘-mtime +n/-n’ : 写入时间大于/小于n天的文件

[root@localhost ~]# find /tmp/ -mtime -1
/tmp/
/tmp/.ICE-unix
/tmp/test
[root@localhost ~]# find /tmp/ -atime +10
[root@localhost ~]# find /tmp/ -atime +1
/tmp/yum.log
/tmp/.bash_history

看到这里,您对这三个time是不是有些晕了,那阿铭就先给您介绍一下这三个time属性。

文件的 Access time也就是 ‘atime’ 是在读取文件或者执行文件时更改的。文件的 Modified time也就是 ‘mtime’ 是在写入文件时随文件内容的更改而更改的。文件的 Create time也就是 ‘ctime’ 是在写入文件、更改所有者、权限或链接设置时随inode的内容更改而更改的。 因此,更改文件的内容即会更改mtime和ctime,但是文件的ctime可能会在 mtime 未发生任何变化时更改,例如,更改了文件的权限,但是文件内容没有变化。 如何获得一个文件的atime mtime 以及ctime ?

‘stat’ 命令可用来列出文件的 atime、ctime 和 mtime。

[root@localhost ~]# stat test/test2
  File: 'test/test2'
  Size: 0               Blocks: 0          IO Block: 4096   普通空文件
Device: 803h/2051d      Inode: 261657      Links: 1
Access: (0744/-rwxr--r--)  Uid: (  500/   user1)   Gid: (  500/testgroup)
Access: 2013-05-10 09:00:36.092000531 +0800
Modify: 2013-05-10 09:00:36.092000531 +0800
Change: 2013-05-10 09:30:58.788996594 +0800

atime不一定在访问文件之后被修改,因为:使用ext3文件系统的时候,如果在mount的时候使用了noatime参数那么就不会更新atime的信息。总之, 這三個 time stamp 都放在 inode 中。若 mtime, atime 修改inode 就一定會改, 既然 inode 改了, 那 ctime 也就跟着要改了。

阿铭继续’find’常用选项:

‘-name filename’ 直接查找该文件名的文件,这个选项使用很多。

[root@localhost ~]# find . -name test2
./test/test2
./test2

‘-type filetype’ 通过文件类型查找。文件类型在前面部分已经简单介绍过,相信您已经大体上了解了。filetype 包含了 f, b, c, d, l, s 等。

[root@localhost ~]# find /tmp/ -type d
/tmp/
/tmp/.ICE-unix
/tmp/test
[root@localhost ~]# find /tmp/ -type f
/tmp/yum.log
/tmp/.bash_history
/tmp/ip.txt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值