day14 2019.8.12
文件查找
1.按名称查找
# find ./ -name “...”
[root@kuangjie ~]# find ./ -name "a"
# find ./ -name “...” -ls
[root@kuangjie ~]# find ./ -name "access.log" -ls
67182355 56752 -rwxr--r-- 1 root root 58112885 Jul 30 16:00 ./access.log
# find ./ -iname “...” 忽略大小写
2.按文件大小查找
1.# find /etc -size +5M 大于5m的
[root@kuangjie ~]# find /etc -size +5M
/etc/udev/hwdb.bin
[root@kuangjie ~]# find /etc -size +5M -ls
67526223 7760 -r--r--r-- 1 root root 7942570 Jul 29 09:04 /etc/udev/hwdb.bin
2.# find /etc -size -5M 小于5m的
3.# find /etc -size 5M 等于5m
3.按文件类型查找
# find ./ -type f -name “eth0”
[root@kuangjie ~]# find ./ -type f -name "access.log"
./access.log
# find /dev/ -type b
[root@kuangjie ~]# find /dev/ -type b
/dev/sr0
4.按修改时间查找
# find ./ -type f -matime +7
[root@kuangjie tmp]# find ./ -type f -mtime +7
# 最近七天的内容留下删除之前的
[root@kuangjie tmp]# find ./ -type f -mtime +7 -exec rm -f {} \;
[root@kuangjie tmp]# for i in {1..31}; do date -s "2019/08/$i" ; touch file-$i ; done
# 本地文件保留最近七天的备份文件,备份服务器保留至少三个月的备份文件(实际使用方案)
# find /backup/ -iname "*.bak" -mtime +7 -delete
# find /backup/ -iname "*.bak" -mtime +180 -delete
5.按用户和组查找
# 查找属主是kj
[root@kuangjie tmp]# find /home/ -user kj
/home/kj
....
# 查找属组是kj
[root@kuangjie tmp]# find /home/ -group kuangjie
/home/kj
...
# 查找属主是kj,属组是kuangjie
[root@kuangjie tmp]# find /home/ -type d -user kj -group kuangjie
/home/kj
# 查找没有属主
[root@kuangjie tmp]# find /home/ -nouser
/home/zhangsan
/home/zhangsan/.bash_logout
# 查找没有属组
[root@kuangjie tmp]# find /home/ -nogroup
/home/zhangsan
/home/zhangsan/.bash_logout
# 查找没有属主或属组
[root@kuangjie tmp]# find /home/ -nouser -nogroup
/home/zhangsan
/home/zhangsan/.bash_logout
6.find查找后的处理动作
# -print 打印查到的内容 默认
# -ls 长格式显示的方式打印查到的内容
# -ok 跟shell命令 会提示是否操作
# -delete删除
# -exec 跟shell命令 ( \;)
[root@kuangjie tmp]# find -type f -name "file*" -exec rm -f {} \;
# 查找/var/log/ .log结尾的并删除
[root@kuangjie tmp]# find /var/log/ -type f -name "*.log" -mtime +7 -exec rm -f {} \;
[root@kuangjie tmp]# find /var/log/ -type f -name "*.log" -mtime +7 |xargs rm -f
7.记得文件内容,但不记得文件名称、路径
# find
# grep
# 将find查询到的文件结果作为grep的参数
[root@kuangjie tmp]# find /etc/ -type f |xargs grep "nologin" --color=auto
/etc/libreport/ignored_words.conf:SHELL=/sbin/nologin/
8.find逻辑运算符
# -a 与
# -o 或
# !|not 非
# 查找当前目录下,属主不是root的所有文件
[root@kuangjie tmp]# find /home/ ! -user root -ls
# 查找当前目录下,属主属于kj,并且大小小大于1k的文件
[root@kuangjie tmp]# find /home/ -type f -user kj -size +1k
# 查找当前目录下的属主和root 或者 以*.xml结尾的普通文件
[root@kuangjie tmp]# find ./ -type f -a \( -user root -o -name '*.xml' \)