第七课-第三讲 07_03_Linux文件查找详解
一. let 用法 I= 1 SUM=$[ $SUM+$I ] = let SUM+=$I = let SUM++ -= I-=1 相当于 I-- += I+=1 相当于 I++ /= %=
二. 文件查找
grep,egrep,fgrep:文本查找,查找文本的,查找字符串的
- locate 命令:全系统查找文件命令,非实时的,模糊匹配查找。他的查找是根据全系统文件数据库进行的。优势是速度快 updatedb 手动生成文件数据库(系统我们生成全希望文件数据库时用到手动生成,否则locate命令无法执行)
- find 实时查找,精确查找,速度慢,因为他遍历指定目录中的所有文件完成查找。支持很多查找标准,甚至支持用正则表达式匹配文件名查找
find 查找路径(省略表示当前目录) 查找标准 查找到以后的处理动作 查找路径: 省略表示当前目录,默认是当前目录 查找标准: 默认是指定路径下的所有文件 查找到以后的处理动作: 默认为显示到屏幕
查找标准(匹配标准): -name 'FILENAME'根据文件来查找,对文件名做精确匹配 -name '文件名通配符'(* ? []) 此时是严格区分大小写的 -iname '文件名通配符'(* ? []) 此时是不区分大小写的 -regex PATTERN 基于模式来显示文件名查找
-user USERNAME 根据文件的属主进行查找
-group GROUPNAME 根据文件的属主、组进行查找
-uid 根据uid查找(用户被删除后原来以该用户为属主的文件的属主都变成该用户的id号,所以要此时要根据uid查找)
-gid 根据gid查找
-nouser 查找没有属主的文件,用户删除后,以该用户为属主的文件就变成了nouser文件
-nogroup 查找没有属组的文件
-type
f 普通文件
d 目录文件
c 字符文件
b 块文件
l 链接文件
p 管道文件
s 套接字文件
find /tmp -type d
-size(不给单位默认单位是字节)
[+|-]nk +10k 大于10k -10k小于 10k 10k 等于10k
[+|-]nM
[+|-]nG
find /etc -size 1M--size单位匹配查找法则:0.0M--1M 大小之间的都认为是 1M find /etc -size 10M--size单位匹配查找法则:9.0M--10M 大小之间的都认为是 10M
-time
-mtime 修改时间单位为天 [+-]n
-ctime 改变时间单位为天 [+-]n
-atime 访问时间单位为天 [+-]n -5 5天内访问过小于5天, +5 至少5天没访问了大于5 ,5 刚好5天访问过等于5天
-mmin 修改时间单位为分钟 [+-]n
-cmin 改变时间单位为分钟 [+-]n
-amin 访问时间单位为分钟 [+-]n
-perm MODE 根据文件权限来查找,权限等于mode的值
-perm -MODE 每一位权限都必须精确匹配,文件权限能完全包含此MODE是匹配成功并显示。也就是3部分(ugo)文件rwx权限都要大于等于MODE时才匹配成功
-perm /MODE 9位权限中有一位匹配
-perm +MODE 同 -perm /MODE
三. 组合条件查找
条件1 条件2 ---没有指明2个条件关系是默认是 a ,也就是 与 条件 -a 与 -o 或 -not 非
find /tmp -nouser -a -type d find /tmp -not -type d 查找非目录文件 find /tmp -not -type d -a -not -type s
四. find 的动作
-print 默认是显示
-ls 类似 ls -l 的形式显示每一个文件的详细信息
-ok COMMAND {} \; 反斜线合分号必须有。{} 表示引用find到的结果。 每次操作都需要用户确认
-exec COMMAND {} \; 反斜线合分号必须有。{} 表示引用find到的结果。不需要确认
-xargs find ./ -perm -020 -exec mv {} {}.new ;
xargs的用法(不需要 {} 应用,不需要 ;结尾) find /etc -size +1M -exec echo {} >> /tmp/etc.largefiles ; find /etc -size +1M | xargs echo >> /tmp/etc.largefiles