文件查找命令find (笔记)

简介:

之前所学的grep egrep fgrep 都是用来查找文本中的某个字符匹配的

现在来学一下查找文件命令 locate find


locate 

此命令是非实时查找文件,它是根据全系统文件数据库进行查找的,

仅用模糊匹配,非精确查找

locate filename 即可实现查找其它相关文件

但是注意有时候如果系统是刚安装的有可能还没建立此数据库,使用该命令会提示查找不到数据库

不过不用担心使用updatedb即可自动生成数据库,生成数据库的时候有时候会很慢,这个根据用户的

磁盘上所放的东西多少决定的

db库存放在/var/lib/mlocate/mlocate.db

这个特点就是速度快


find命令

特点:实时查找

      精确匹配,遍历指定目录中的所有文件完成查找,所以速度慢

      支持众多查找标准

用法格式:

find 查找路径 查找标准 查找到以后的处理动作action

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

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

action  :默认为打印到屏幕输出


查找标准

  匹配标准:

    -name 'filename'  对文件名作精确匹配

    -iname 'filename' 查找文件名,但是忽略大小写

    -regex pattern    基于模式正规则表达式进行文件名匹配

    -user username    根据属主查找文件

    -group groupname  根据属组查找文件

    -uid   UID        根据UID查找文件

    -gid   GID        根据GID查找文件

    -nouser           查找没有属主的文件

    -nogroup          查找没有属组的文件

    -type   f普通文件 d目录 c字符设备 b块设备 l链接文件 p管道设备 s套接字设备 按类型查找

    -size  [+|-] #k #m #g 中括号可省略+-表示大于小于#号是数字 按文件大小查找文件

   组合条件

    -a  and 与    

    -o  or  或   

    -not  非

    用法例:  find ./ -not -user user2 -a -not -user user1

    解释:查找非属主为user2且非属主为user1的文件

    此条命令还可以这样写

            find ./ -not \( -user user -o -user user1\) 摩根定律你懂得!

    -mtime 修改时间

    -ctime 改变时间

    -atime 访问时间

        [+|-] # 

        -5 表示5天之内

        +5 表示5天之前

    -mmin 修改分钟

    -cmin 改变分钟

    -amin 访问分钟

    和上边的区别是上方的单位是天,下方的单位是分钟

    -perm 644 权限匹配,这个表示查找精确匹配644权限的文件

    -perm /644 权限匹配,表示匹配其它任意一位权限都OK

        一位权限的意思:644 为rw-r--r-- 表示匹配其中任何一个权限就打印到屏幕上

    -perm -644 表示匹配包含该权限的比如755 777 744 只要大于这个这个644的权限就OK,

               切记不可小于这个权限比如633这个就不行

        便于理解/表示或的意思 即其中只要有一位匹配就显示

                -表示完全匹配 即只可大于不可小于呵呵 



查找到以后处理Action 动作

    -print 打印到屏幕

    -ls    类似ls -l的形式显示匹配到的文件

    -ok command {} \; 即可在匹配到的文件后加要执行的命令,这个是固定格式

                    (注:此命令被执行时需要确认每一条)

    -exec command {} \; 同上一条一样,不同的是这个命令执行时不会提示是否需要执行

                        所以要在执行前确认确认再确认!!

    xargs command  这个也是后边可以接其它命令的

    用法 find /etc -size +1M | xargs echo >> /tmp/large.file


最后加一个问题 我没想出来希望大神帮助一下看看怎样组合命令!!

 

1.查找一下/etc目录下所有用户都没有执行权限的文件

已找到答案  find /etc -not -perm /222 

Thanks for your watching!

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1643763如需转载请自行联系原作者


Winthcloud

相关文章
|
4月前
|
Unix Linux
Linux命令之find
Linux命令之find
25 2
|
5月前
|
Linux Shell 数据库
linux(十九)查找文件的四个命令whereis、which、find、locate~
linux(十九)查找文件的四个命令whereis、which、find、locate~
48 0
|
10月前
|
Linux
【Linux命令200例】find用来查找文件和目录,不可错过的15个例子
在Linux系统中,find命令非常强大,它可以用来查找文件和目录,并对查找到的结果进行各种操作。find命令是一个基于文件查找的工具,可以按照文件名、文件类型、文件大小、文件权限等条件进行高度灵活的查找。本文将详细介绍find命令的用法,包括常用参数的解释和示例。
322 0
|
运维 Java Shell
shell脚本回顾及find文件查找基本用法| 学习笔记
快速学习shell脚本回顾及find文件查找基本用法
298 0
|
Linux
Linux 文件查找搜索命令find
Linux 文件查找搜索命令find
|
安全 Shell Linux
linux命令之find查找文件
find 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
241 0
|
Shell Linux C++
linux shell之paste合并文件和找到匹配的文件里面替换内容(find和-exec或xargs组合)
linux shell之paste合并文件和找到匹配的文件里面替换内容(find和-exec或xargs组合)
189 0
|
前端开发 Shell Perl
目录内批量查找替换,我用 tree 替代 find。
最近有需求,需要在编译好的前端文件里,查找替换特定字段。 通常都会想到用 find 找出文件再使用管道输出给 sed。但实际验证下来,包括去 StackOverFlow 上查找,解决方案都不理想。 主要的痛点是:find 对需要忽略的目录路径,处理很麻烦,效果还差异很大。
1262 0