需要在系统中查找某个文件或者目录的时候,就需要用到find命令。它可以遍历给定的路径之下所有层级结构,来找到需要的文件。Find命令可以做到实时查找,精确查找,它需要遍历给定的目录下所有层级,所有速度略慢。
1、命令的格式:
find [OPTIONS] [路径] [条件] [处理动作]
2、命令的参数:
路径:给定具体的搜索起始路径,默认为当前目录。
查找条件:查找标准,可以根据文件名,从属关系,文件类型,大小,权限,时间等进行查找。
处理动作:查找完成后,可以指定命令对结果的操作。
3、命令的选项:
根据文件名称查找
-name :根据给定的名称查找;
-iname:查找名称时不区分大小写;
根据文件的从属关系查找
-user:根据属主查找;
-group:根据属组查找;
-uid:根据UID查找;
-gid:根据GID查找;
-nouser:查找没有属主的文件;
-nogroup:查找没有属组的文件;
根据文件的类型查找:
-type 类型:
f:普通文件;
d:目录文件:
l:符号链接文件;
b:块设备文件;
c:字符设备文件;
p:管道文件;
s:套接字文件;
根据文件大小查找:
-size [+|-]#UNIT
单位:k,M,G
根据时间戳查找:
以‘天’为单位:
-atime:访问时间
-mtime:修改时间
-ctime:改变时间
以‘分钟’为单位:
-amin
-mmin
-cmin
根据权限查找:
-perm [/|-]mode
mode:精确权限匹配;
/mode:任意一类用户的权限中任意一位符合条件即满足;
-mode:每一类用户的权限中的每一位同时符合条件即满足;
条件组合:
-a:‘与’操作,默认选项;
-o:‘或’操作;
-not \ !:‘非’;
4、处理动作
-print:标准输出;(默认)
-ls:对查找结果执行‘ls -l’命令,输出文件的详细信息;
-delete:删除查找的文件
-fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式保存至指定文件中;
-ok COMMAND {} \; :对查找到的每个文件执行COMMAND命令,交互式操作;
-exec COMMAND {} \; :对查找到的每个文件执行COMMAND命令;
5、其他说明
find查找到的结果,是一次性给出,并传递给后面的命令,但是有些命令不能接受过长的参数.
例如:find /etc -type f | ls -l 这样是错的。此时,可以用到xargs命令。
例如:find /etc -type f | xargs ls -l
Xargs可以读入查找到信息,并且以空白符或换行符作为分辨。将查找到的信息分隔成多个参数。
6、实例操作
①查找/home中所有的.txt文件并显示
find /home -type f -a -name “*.txt” -ls
②查找以大写字母开头的文件
find / -type f -a -name “[A-Z]*” -ls
③查找所有用户都可读写执行的文件
find / -type f -perm -007 -ls
④查找/etc目录下,所有用户都有执行权限,且其他用户有写权限的所有文件
find /etc/ -type f -a -perm -111 -a -perm -002 -ls
⑤查找/etc目录下,大于1M,且最近一周内容修改过的文件或目录
find /etc/ -size +1M -a -mtime -7 -ls
⑥查找/usr/目录下,不属于root,bin或hadoop的所有文件或目录
find /usr/ -not \( -user root -o -user bin -o -user hadoop \) -ls