Linux 文件查询

查看文件类型:file

  如果你想要知道某个文件的基本数据,例如是属于ASCII或者是data文件,或者是binary,且其中有没有使用到动态函数库等等的信息,可以用file查看

  

  which (寻找“执行文件”)

  

       

  whereis (寻找特定文件)

  

  

  whereis是如何实先的呢,Linux系统会将系统内的所有文件都记录在一个数据库文件里面,而当使用whereis或者是locate时,都会以此数据库文件

  的内容为准,因为,有会你会发现使用这两个执行文件时,会找到已删除的文件,也切也找不到最新的刚才创建的文件。因为这两个命令是由数据库

  当中的结果去查找文件的所在。

  locate

  

  locate寻找的数据是由已创建的数据库/var/lib/mlocate/里面的数据所查询到的,所以不用直接在硬盘中访问数据,是很快速。

  那么有什么限制呢?就是因为它是经由数据库来查找的,而数据库的创建默认是每天执行一次,所以当你创建文件后查询该文件,那么locate

  会告诉你找不到。因为必须要更新数据库。那能否手动更新数据库吗?当然可以,更新locate数据库的方法非常简单,直接输入“updatedb”就可以了

  updatedb命令会去读取/etc/updatedb.conf这个配置文件的设置,然后去硬盘里面进行查找文件名的操作,最后就更新整个数据库文件了。因为updatedb

  会去查找硬盘,所以当你执行updatedb时,可能会等待数分钟时间。

  find

  

  

  关于参数-n,如图所示

  

  +4 代表大于等于5天前的文件名

  -4 代表小于等于4天内的文件名

  4 则是代表4-5那一天的文件名

  

  

  如果将系统里面某个账号删除了,但是账号已经在系统内创建了很多文件时,就可能发生无主孤魂的文件存在。此时可以用-nouser来找出该类型文件。

  

  -perm这个参数,他的重点在找出特殊权限的文件。SUID与SGID都可以设置在二进制程序上,假设想要将/bin 、/sbin这两个目录下只要有SUID或者

  SGID的文件就列出来,你可以这样做:

  

  因为SUID是4分,SGID是2分,总共6分,因此可用+6000来处理这个权限。find后面可以接多个目录进行查找,另外find本来就会查找子目录。

  

      

  范例把的例子以图解来说明,如图

  

  {}代表的是“由find找到的内容”,如夯土,find的结果会被放置到{}位置中。

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

  因为“;”在bash环境下有特殊意义,因此利用反斜杠来转义。

  如果要找的文件是具有特殊属性的,例如SUID、文件所有者、文件大小等,那么利用locate是没有办法找到。用find就很重要啦。

  find还可以利用通配符来找文件名。比如想找/etc下面文件名包含httpd的文件:

  

 

posted @ 2019-05-09 19:51  青青子衿J  阅读(2771)  评论(0编辑  收藏  举报