如何查找文件/文件类型/属性--locate/find/whereis/file/lsattr

 <!-- 与君共勉,欢迎批评指正-->

-----查找文件

1、find名称查找文件格式:$ find  [ PATH ]  [ option ]  [ action]

常用option如下:

-name fileName

-size  [+-]SIZE   #+表示大于 -表示小于

-type TYPE      #TYPE为f/d/l/s/b/c

-perm mode    #搜寻文档权限等于mode的文档,如$find ./  -perm 0755

-perm -mode    #搜寻全部囊括mode权限的文档,如$find ./  -perm  -0744 则会列出权限为4755、0744的所有文件,因为-rwsr-xr-x囊括了-rwxr--r--的属性,即拥有4755权限的文件一定拥有0744的权限

-perm +mode    #搜寻包含任一mode权限的文档,例如$find ./ -perm +755 时,属性为-rw- --- ---的文件也会被列出来,因为他有rw的属性

 

与时间有关的option有-mtime/ctime/atime,这三者的区别请参考本博客的另一篇文章<atime/ctime/mtime的区别>

-mtime n   n天之前的一天内被修改过的文件

-mtime +n  n天之前(不含n)被修改过的文件

-mtime -n   n天之内(含n)被修改过的文件

 

例如:

$find ./ -mtime 4  

$find ./ -mtime -4  

$find ./ -mtime +4     



如何查找文件/文件类型/属性--locate/find/whereis/file/lsattr
 
 

 

  例2:

将过去24小时内修改过的文件列出

$find ./ -mtime 0   #0 表示现在

 

 

例3:$find / -perm +7000  -exec ls -l {} \;

 

 

 

 说明:

{} 代表有find找到的内容

-exec一直到\;是关键词,代表find额外的动作的开始到结束,在这中间的就是find的额外动作

因为分号在bash环境下有特殊意义,这里的\主要是为了跳脱分号的特殊意义    

     

 例4:$find ./ -name '*http*'   #find命令中可以使用通配符来寻档案名

        

 

2.locate命令查找文件格式:$ locate [-ir] Keyword

例1:找出所有文件名含有passwd的文档

$ locate passwd

/etc/passwd

/etc/passwd-

/etc/pam.d/passwd

/etc/news/passwd.nntp

 

3、whereis命令格式$ whereis [-bmsu] 文档名或目录名

-b 只查找binary格式的文档

-m 只查找在说明文件manual路径下的文件

-s 只找source来源档案

-u 搜索不在上述三个项目中的其他文件

 

区别:

find命令搜寻命令花的时间长,因为他直接在硬盘上搜索。

 

locate命令搜索时以数据库文档(/var/lib/mlocate/)中搜索得到的,不用直接去硬盘取数据,所以较快。

 但是数据库的建立默认是在每天执行一次(即每天更新一次数据库),所以当你新建立起来档案后,在数据库更新前使用locate会找不到文件。

解决办法:可以使用updatedb命令更新数据库(这个命令一般会执行数分钟),然后再使用locate命令查询。

 

whereis命令也是根据数据库文档得到文件

 

根据上面的区别可知:一般我们先用locate 或whereis命令查找文件,在找不到的情况下才用find查找

 

-----查看文件的类型:file命令

-----查看文件的属性:lsattr命令

 

 

你可能感兴趣的:(find命令,locate命令,whereis命令,查询文件类型file,文件属性lsattr)