find命令

Find是一个非常有效的工具,它可以遍历当前目录甚至与整个目录。

Find命令的一般形式为:

   find  pathname –options [-print -exec -ok]

pathname:find命令所查询的目录路径。用来当前目录用。

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

-exec find 命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为

  ‘Comm.-and’ {};

注意{}和之间的空格。

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

2.1 find命令的选项

Finkd命名有很多选项和表达式,每个选项前面跟随一个横杠-。

   -name 按照文件名称查找文件

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

   -prune 使用者选项可以使用find命令不在指定的目录中查找,如果同时使用了

- depth选项,那么-prune选项将被find命令忽略。

       -user  按照文件所属的组来查找文件

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

       -mtime –n +n 按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。

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

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

       -type 查找某一类型的文件

       [root@localhost test]# find . -name 'myfile' -print

./myfile

        使用-perm选项。

         [root@localhost test]# find -perm 775 -print

./myfile

忽略某个目录

 如果希望在/apps目录下查找文件,但不希望在/app/bin目录下查找,可以使用:

 [root@localhost test]# find /apps -name "/apps/bin" -prune -o –print

使用user 和nouser 选项。

在$home目录中查找文件属主为davee的文件,可以使用:

  [root@localhost test]# find ~ -user dave –print

为了查找用户已被删除的文件

  Find /home –nouser –print

使用goup和nogroup选项。

  查找在/apps目录下查找属于accts用户组的文件,可以用

    Find /apps –group accts –print

按照更改时间查找文件

   如果希望按照更改时间查找文件。

查找更改时间在5日以内的文件,可以用:

  $find / -mtime -5 –print

查找在/var/adm目录下查找更改时间在3日以前的文件,可以用

  $find /var/adm –mtime +3 –print

使用type选项

   Find /etc –type d –print

使用size选项

   Find /etc –size +1000000c –print

   没有c的就是块

使用mount选项,在当前的文件系统中查找文件(不进入其他的文件系统),可以使用find命令的mount选项。

使用cpio选项:可以用来想磁盘设备备份文件或从中恢复文件。可以使用find命令在整个文件系统中查找文件,然后使用命令将其备份到磁盘上。

2.2 xargs

   有的系统能传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出的错误。Find命令吧匹配到的文件传递给xargs命令,而xargs命令每次值获取一部分文件而不是全部,不像-exec选项那样。

原文地址:https://www.cnblogs.com/evencao/p/3296634.html