Linux命令之locate、find搜索命令

Linux命令之locate、find搜索命令

     locate命令用于查找文件,比find命令的搜索速度快,它有一个数据库,这个数据库每天的例行工作(crontab)程序来执行updatedb。运行:updatedb在/var/lib/slocate/ 下生成 slocate.db 数据库即可快速查找。

     示例:现场拷贝/etc/grub2.cfg到/tmp/grub2.cfg,这时如果不更新数据库,用locate搜索grub2.cfg是无法搜索到/tmp/下的grub2.cfg的

wKioL1XmkKOhD7vZAAEshp4kMqs468.jpg   

     find语法:find pathname -options [-print -exec -ok ...]

     常见参数选项:

         pathname: find命令所查找的目录路径。如用.来表示当前目录,用/来表示系统根目录

 -regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称

           -print: find命令将匹配的文件输出到标准输出

            -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } ;,注意{ }和;之间的空格

              -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行

            -name:按文件名查找,支持使用globbing;-iname:不区分字符大小写,支持使用globbing

            -perm:按文件权限来查找

            -user:按文件属主来查找

           -group:按文件所属组查找

      -uid UserID:查找文件的属主指定uid的文件

     -gid GroupID:查找文件的属组指定gid的文件

           -mtime:-n 、+n,按文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项

         -nogroup:查找无效所属组的文件,即该文件所属的组在/etc/groups中不存在。

          -nouser:查找无效属主的文件,即该文件的属主在/etc/passwd中不存在。

           -newer:FILE1! FILE2,查找更改时间比文件FILE1新但比文件LIFE2旧的文件。

            -type:查找某一类型的文件,如:b:块设备文件;d:目录;c:字符设备文件;p:管道文件。l: 符号链接文件;f:普通文件

          -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计

           -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找

          -fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息

           -mount:在查找文件时不跨越文件系统mount点

          -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件

            -cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中

          -amin n:查找最后N分钟访问的文件

         -atime n:查找最后n*24小时访问的文件

          -cmin n:查找最后N分钟被改变文件状态的文件

         -ctime n:查找最后n*24小时被改变文件状态的文件

          -mmin n:查找最后N分钟被改变文件数据的文件

         -mtime n:查找最后n*24小时被改变文件数据的文件


        该命令支持查找条件逻辑运算符not、and、or组成的复合条件。逻辑运算符and、or、not的含义为:

              and:逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条件都满足时,寻找条件才算满足

               or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足时,寻找条件就算满足

              not:逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件

             !A -o !B = !(A -a B)

        !A -a !B = !(A -o B)

        示例:

   1、查找/var目录属主为root,且属组为mail的所有文件;

wKioL1XmkIzSFG4oAAM332QF-hw811.jpg

   2、查找/usr目录下不属于root、bin或hadoop的所有文件;

wKiom1XmjpfyfnsxAAEa6eSb7Mw516.jpg

   3、查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件;

wKioL1XmkMmzloLJAAMLffbKTt8687.jpg

   4、查找当前系统上没有属主或属组,且最近一周内曾被访问过的所有文件;

wKiom1XmjrrAE_A_AAHF8-wzkOw355.jpg

   5、查找/etc目录下大于20k且类型为普通的所有文件;

wKiom1Xmjs7z3GRcAAtGabsTnrE706.jpg

   6、查找/etc目录下所有用户都没有写权限的文件;

wKioL1XmkQLy1MfJAACTJem5epc539.jpg

   7、查找/etc目录下至少有一类用户没有执行权限的文件;

wKiom1XmjvWy0NHWAAVRxKq6Pyw220.jpg

   8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户拥有写权限的文件;

wKioL1XmkSrykVZcAAbuE1lSww0758.jpg


你可能感兴趣的:(find,locate)