首页 > 代码库 > linux基础--文件查找

linux基础--文件查找

locate

  非实时,模糊查找,查找根据全系统文件数据库进行。

  updatedb:手动生成文件数据库

  优点:速度快


find

  实时查找,精确查找。

语法:

  find [查找路径] [查找标准] [处理动作]

  查找路径:默认为当前目录

  查找标准:默认为指定路径下所有文件

  处理动作:默认为显示

选项[查找标准]:

  -name ‘FILENAME‘:对文件名做精确匹配

    文件名通配*、?、[]

  -iname ‘FILENAME‘:对文件名匹配不区分大小写

  -regex PATTERN:基于正则表达式查找

根据文件属性查找

  -user USERNAME:根据属主查找

  -group GROUPNAME:根据属组查找

  -uid UID:根据UID查找

  -gid GID:根据GID查找

  -nouser:查找没有属主的文件

  -nogroup:查找没有属组的文件

根据文件类型查找

  -type:根据文件类型查找

    f:普通文件

    d:目录

    s:套接字文件

    c:字符设备

    b:块设备

    l:链接文件

    p:管道设备

根据文件大小查找

  -size:根据文件大小查找

    [+|-]#k:查找大于#k或者小于#k的文件

根据逻辑与或非查找

  -a:表示and,同时满足,默认就为与操作

  -o:表示or,满足一个显示

  -not:表示不满足的显示

根据时间查找

  -mtime +#:查找修改时间大于#天的文件

      -#:查找修改时间小于#天的文件

  -atime +#:查找访问时间大于#天的文件

  -ctime +#:查找状态改变时间大于#天的文件

  -mmin +#:找修改时间大于#天分钟的文件

根据权限查找

  -perm MODE:根据权限查找文件,使用MODE表示精确查找

  -perm -mode:表示每一位权限都必须精确匹配

  -perm /mode:表示9位权限中有任何一位匹配都匹配查找


find动作:

  -print:默认值,显示

  -ls:类似ls -l的形式显示匹配后每一个文件的详细信息

  -ok COMMAND {} \; 匹配后执行命令。注:此处必须使用;为结束符,否则为语法错误,{}为文件名称占位符

  -exec COMMAND {} \; 匹配后执行命令。注:此处必须使用;为结束符,否则为语法错误,{}为文件名称占位符

例:find ./ -type f -exec chmod o-w {} \;  

  查找当前目录下类型为文件的文件,并删除其他用户的写权限。

  find ./ -mtime +7 -exec rm -rf {} \;

  查找当前修改目录下时间大于7天的文件,并删除


扩展命令

xargs:从标准输入接受命令并执行

  使用管道接受,不需要使用{}占位符,也无需\;结尾

例子:

 find /etc -size +1M -exec echo {} >> /tmp/etc.bak \;

 find /etc -size +1M |xargs echo >> /tmp/etc.bak

 上述两种命令都可以实现查找/etc下大于1M的文件并写入指定文件中


本文出自 “亮公子” 博客,请务必保留此出处http://iyull.blog.51cto.com/4664834/1884907

linux基础--文件查找