find
格式: find [OPTION] .... [查找路径] [查找条件] [处理动作]
查找路径:可以指定具体的路径,默认是当前路径
查找条件:用来指定文件查找的标准,可以是文件名、大小、权限、类型等等
处理动作:对符合条件的文件进行的操作,默认是直接输出到屏幕上
查找条件
按照名称来搜索:
可以结合文件通配符进行使用
-
name :
find -name a 完全匹配 find -name "a*" 所有的以a开头的文件或者文件夹 find -name "a?" 所有以a开头后面为一个字母的文件或者文件夹 find -name "a[ab]" 以a开头后面是a或者b的文件或者文件夹
-
iname 忽略大小写
find -iname a
按照搜索层级
-
-maxdepth level 指定最大的搜索层数,指定的目录为第一层
find -maxdepth 2 -name a
-
-mindepth level 指定最小的搜索层数
find -mindepth 2 -name a
按照文件的类型来查找
- -type type
- f 文件
- d 目录
- l 链接
- s socket套接字
- b 块设备
- c 字符设备文件
- p 管道文件
find -type f -name a 搜索文件
find -type d -name a 搜索目录
find -type l -name a 搜索软链接
空文件和空目录
-
-empty
find -empty find -empty -type d
根据属组,属主来搜索
-
-user username 查找属主是username的文件或者文件夹
-
-group groupname 查找属组是groupname的文件或者文件夹
-
-uid uid 查找uid为uid的文件或者文件夹
-
-gid gid 查找gid为gid的文件或者文件夹
-
-nouser 查找没有属主的文件或者文件夹
-
-nogroup 查找没有属组的文件或者文件夹
find -user jiangyi
chmod :xiaofeng jiangyi
chown :xiaofeng jiangy
find -group xiaofenf
find -group xiaofeng
find -uid 1000
find -gid 1000
find -gid 1001
find -nouser
find -nogroup
组合条件
- 与 -a
- 或 -o
- 非 -not !
- 摩根定律
- (非A)或(非B)=非(A且B)
- (非A)且(非B)=非(A或B)
find -not -user wupeiqi -a -not -user xiaofeng -ls|wc -l
find -not \( -user wupeiqi -o -user xiaofeng \) -ls|wc -l
排除目录
- -path
find /etc/ -path /etc/ssh -name *_config
文件大小来搜索
-
-size[+|-] unit 常用单位:k,M,G,c(byte)
-
#unit:(#-1,#] 不包括#-1,但是包括#
-
-#:[0,#-1],从0到#-1
-
+#:(#,......) 不包括#
-
文件时间戳
-
以“天"为单位
-
atime:[+|-] day
-
time [#,#+1)包括#,但是不包括#+1
-
+time:[#+1,.....]
-
-time:[0,#)
-
-
mtime
-
ctime
-
-
以“分钟”为单位
- -amin
- -mmin
- -cmin
根据权限来搜索
- -perm 权限
find -perm 644 -ls
find -perm 777 -ls
处理动作
-
-print 把搜索到的结果直接打印到屏幕上,默认的
-
-ls 相当于执行
ls -l
命令 -
-delete 删除查找的文件
-
-fls filename 将查找结果写入文件中
-
-ok command {} \;对查找的文件执行command命令,但是每一次都需要用户确认
-
-exec command {} ; 对查找到的文件执行command命令,不需要用户确认
- {} 表示查找到的文件
- find 传递的时候 是一次性传递的