语法
find path -option [ -print ] [ -exec -ok command ] {} \;
find [查找起始路径] [OPTIONS] [查找条件] [处理动作]
起始路径:默认是当前路径
查找条件:根据文件名、大小、类型、从属关系、权限等查找
处理动作:默认是 print 输出,可以指定删除等操作
示例
-- 找出/tmp目录下属主为非root的所有文件find /etc -not -user root -ls# 文件大于1M的普通文件find /etc -size +1M -a -type f# 最近一周被修改过find /usr -mtime 7# 最近一周被修改过 且 不是 root 和 bae 用户find /usr -mtime 7 -a -not -user root -a ! -user bae# 没有属和组,且最近一周被访问过的文件和目录find / -nouser -o -nogroup -a -atime 7
option
通过名称查找
- -name
- -iname
忽略大小写
find . -name a.php
find . -name “*.php”
递归查找
-depth n n 为子目录层级,默认已开启且不限制
正则路径
- -regex pattern
文件大小
大小 单位 的重要性 #-1 1024M-1 和1G-1 是不同的 +# 大余 (#,-∞) -# 小于 [0,#-1] # 等于 在 #-1 到# 之间的文件(#-1,#]
通过文件类型
- -type
类型列表:
f: 普通文件
d: 目录文件
l:符号链接文件
b:块设备 文件
c:字符设备文件
p:管道文件
s:套接字文件
通过创建日期
- ctime n 过去 n 天被创建过的文件
- cmin n 过去 n 分钟被创建过的文件
时间 单位:天 -atime -ctime 表示过去 +# 大于 (#+1,-∞) -# [0,#) # [#,#+1]
通过修改日期
- ctime n 过去 n 天被修改过的文件
- cmin n 过去 n 分钟被修改过的文件
通过读取日期
- atime n 过去 n 天被读取过的文件
- amin n 过去 n 分钟被读取过的文件
从属关系
-user USERNAME:查找属主指定用户的所有文件;
-group GRPNAME:查找属组指定组的所有文件;
-uid UID:查找属主指定的UID的所有文件;
-gid GID:查找属组指定的GID的所有文件;
-nouser:查找没有属主的文件;
-nogroup:查找没有属组的文件;
组合逻辑
与:-a, -and 默认组合逻辑;
或:-o, -or
非:-not, !
处理动作
-print:输出至标准输出;默认的动作;
-ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;
-delete:删除查找到的文件;
-fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;
-ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;
-exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;
