本文共 1563 字,大约阅读时间需要 5 分钟。
find是一种查找文件的命令。它遍历系统中的每个文件实现精确、实时查找,并可以根据用户指定路径查找。它支持Glob的通配符。find的常用格式为:
find [查找路径 ...] [查找条件] [处理动作]
1、find命令常用查找条件:
-name "FILENAME" 按指定名称查找
-iname "FILENAME" 不区分文件的大小写
-user USERNAME 根据用户属主查找
-group GROUPNAME 根据用户属组查找
-uid UID 根据UID查找文件
-gid GID 根据GID查找文件
-nouser 查找没有属主的文件
-nogroup 查找没有属组的文件
-type 根据文件类型查找
f :普通文件
d:目录文件
l:软连接
b:块设备
c:字符设备
p:管道
s:socket文件
-size [+/-]#根据文件大小查找。默认按字节查找单位: {k|M|G}
+: 表示大于指定大小的文件
-: 表示小于指定大小文件
-atime [+/-]# 根据访问时间(单位为天)
-mtime [+/-]# 根据修改时间(单位为天)
-ctime [+/-]# 根据改变时间(单位为天)
-amin [+/-]# 根据访问时间(单位为分钟)
-mmin [+/-]# 根据修改时间(单位为分钟)
-cmin [+/-]# 根据改变时间(单位为分钟)
+: 表示至少指定时间没有被访问或被修改过
- : 表示最近指定时间内被被访问或被修改过
-perm 根据权限查找
mode:精确匹配
/mode:任何一位匹配都行
-mode:所有都得匹配
2、多条件查找,条件间逻辑关系:
并:-a
或:-o
非:!, -not
若省略连接符则默认为是“并”关系
3、处理动作:
-print 默认动作。将查找结果输出
-ls :将查找结果详细输出
-ok COMMAND { } \; 执行命令并提醒用户确认
-exec COMMAND { } \; 执行命令不提醒
其中{}是一个占位符,表示对查找的结果执行命令 \; 固定格式
4、实例应用
1、使用group和nogroup选项
就像user和nouser选项一样,针对文件所属于的用户组, find命令也具有同样的选项,为了在/apps目录下查找属于gem用户组的文件,可以用:
$ find /apps -group gem -print
要查找没有有效所属用户组的所有文件,可以使用nogroup选项。下面的find命令从文件系统的根目录处查找这样的文件
$ find / -nogroup-print
2、按照更改时间或访问时间等查找文件
如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用mtime选项来查找这样的文件。
用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。
希望在系统根目录下查找更改时间在5日以内的文件,可以用:
$ find / -mtime -5 -print
为了在/var/adm目录下查找更改时间在3日以前的文件,可以用:
$ find /var/adm -mtime +3 -print (5) 查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
find /etc -size +1M -exec {} > /tmp/etc.largefiles
本文转自 沐木小布丁 51CTO博客,原文链接:http://blog.51cto.com/sxhxt/907959
转载地址:http://lawso.baihongyu.com/