find -查询命令 查询参数 [ -查询连接命令 -操作命令 ]
按什么条件? 条件参数? 满足不满足时? 执行什么操作?
find -name "aaa*" -a -print
当文件名为aaa开头时,执行打印操作
查询命名
-path ./ddd 选定ddd目录及以下的内容
-name "abc*" 选定以abc开头的文件
-perm 644 选定属性石644的文件或目录
-user root 选定root用户的文件或目录
-atime -5 最近一次查看文件时间距今5日以内 (atime,ctime,mtime解释在下面)
-atime +5 最近一次查看文件时间距今大于5日
-ctime -5 最近一次修改文件属性或内容时间距今5日以内
-ctime +5 最近一次修改文件属性或内容时间距今大于5日
-mtime -5 最近一次修改文件内容时间距今5日以内
-mtime +5 最近一次修改文件内容时间距今大于5日
-newer aaa.log 比aaa.log新的文件
! -newer aaa.log 比aaa.log旧的文件
-type f 只选择文件
-type d 只选择目录
-type l 只选择链接
-size +100c 大于100字节的文件
-size 100c 刚好100字节的文件
-size +100 大于100块(一块=512字节)的文件
-size 100 刚好100块(一块=512字节)的文件
操作命令
-prune 排除指定目录,或文件
-print 打印符合查询条件的内容
查询连接命令
!:取反命令
-o:是短路操作符,相当于逻辑运算符 或
-a:是短路操作符,相当于逻辑运算符 与。可以默认不写(因为2个条件之间默认的逻辑操作就是 与)
():组合-a,-o 操作,注意左右括号的左边右边都要留空格
多个查询条件连接例子
find ./ -path ./ddd -a -prune -o \( \( -perm 643 -o -perm 664 \) -a -name "aaa.cc" \) -a -print
遇到ddd目录直接跳过,对非ddd目录下的文件进行判断,如果文件权限是643,或者664 ,且文件名为aaa.cc。则打印出来
每个文件有3个时间
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime
常用命令
1、在当前目录下查询包含hello的的文件
find ./ -name "aaa*" | xargs grep "hello"