Linux下的find查找命令

  Linux下的查找命令有:which(查看可执行文件的位置),whereis(查看指定文件的位置),locate(配合数据库查找指定文件的内容)、find(在磁盘上查找文件)、grep(使用正则表达式搜索文本),其中查找文件的有locate(只能对文件进行模糊匹配)和find(在不指定查找目录的情况下对整个系统进行遍历查找),find使用的更多一些。因此我跟人总结了一下find命令的用法。

  每一种操作系统都有成千上万的文件组成,对于Linux操作系统来说更是不例外。我们都已经很熟悉了在Windows下查找文件了,但可能对于Linux下查找文件的功能并不是很熟悉。但是只要牢牢掌握find命令,那么查找文件将不再是问题。

  find的使用格式:find pathname -options [-pringt -exec -ok.....]

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

  方括号里面的是查找完执行的action:

  1.-print表示find命令将匹配的文件输出到标准输出,

  2.-exec表示find命令对匹配的文件执行该参数给出的shell命令。相应的命令格式为‘command’ { } ;注意{}和之间的空格。

例如:#find /tmp -atime +30 -exec rm -rf {} ;   //删除查找到的超过30天没有访问过得文件

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

  命令选项(-option)

  1.-name 按照文件名查找文件。

  2.-perm 按照文件权限来查找

    例如:#find /tmp -prem 755     //查找在/tmp目录下权限是755的文件

         #find /tmp -prem +222  //表示只要有一类用户(属主,属组,其他)的匹配写权限就行了

         #find /tmp -prem -222   //表示必须所有类别用户都满足写权限

  3.-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。

  4.-user 按照文件的属主来查找文件。

  5.-group 按照文件所属的组来查找文件。

  6.-mtime -n +n 按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改的时间距现在n天以前。find命令还有-atime,-ctime(这里atime,mtime,ctime分别对应的是“最近一次访问的时间”,“最近一次内容修改的时间”和“最近一次属性修改的时间”,这里atime的单位是天)

    例如:#find /tmp -atime +5  //表示查找在五天内没有访问过得文件

            #find /tmp -atime -5   //表示查找在五天内访问过得文件

  7.-nogroup 查找无有效所属组的文件,即该文件所属组在/etc/group中不存在。

  8.-nouser 查找无有效属组的文件,即该文件在/etc/paawd中不存在。

  9.-newer file1 !file2 查找比file1新但是比file2旧的文件。

  10.-type 查找某一类型的文件例如

    b - 块设备文件

    d -目录

    c -字符设备文件

    p - 管道文件

    l - 符号链接文件

      f - 普通文件

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

    例如:#find /tmp -size 2M     //查找在/tmp目录下等于2M的文件

         #find /tmp -size +2M  //查找在/tmp目录下大于2M的文件

         #find /tmp -size -2M   //查找在/tmp目录下小于2M的文件

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

-a and -o and -not的使用:

-a链接两个不同的条件(两个条件必须同时满足)

  例如:#find /tmp -name "*.sh" -a -user root  //查找文件名为*.sh并且用户是root的文件

-o链接两个不同的条件(两个条件满足其一即可)

  例如:#find /tmp -name "*.sh" -a -user root

-not对条件取反的

  例如:#find /tmp -not -user root     //查找用户不是根目录下的文件

原文地址:https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/6270474.html