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选项那样。