美文网首页
day13-文件查找

day13-文件查找

作者: 恩楠 | 来源:发表于2019-08-12 21:52 被阅读0次

find查找

find命令可以根据不同的条件来进行查找文件,例如:文件名称、文件大小、文件修改时间、属主属组、权限、等等方式。
find命令的基本语法:

命令 路径 选项 表达式 动作
查找 地区 妹纸 18-25岁 约?

1. 按名称查找name

[root@ennan ~]# find /etc -name "ifcfg*"
# 在/etc目录下查找名称以ifcfg开头的文件
[root@ennan ~]# find /etc/ -iname "iFC*"
# 在/etc目录下查找名称以iFC开头的文件,不区分大小写

2. 按文件大小查找size

[root@ennan ~]# find /etc/ -size +5M
# 在/etc下查找大于5M的文件
[root@ennan ~]# find /etc/ -size -5M
# 在/etc下查找小于5M的文件
[root@ennan ~]# find /etc/ -size 5M
# 在/etc下查找大小为5M的文件(四舍五入)

2. 按文件类型查找type

[root@ennan ~]# find /dev/ -type f
# f为文件
[root@ennan ~]# find /dev/ -type d
# d为目录
[root@ennan ~]# find /dev/ -type l
# l为连接
[root@ennan ~]# find /dev/ -type b
# b为块设备
[root@ennan ~]# find /dev/ -type c
# c为字符设备
[root@ennan ~]# find /dev/ -type s
# s为套接字
[root@ennan ~]# find /dev/ -type p
# p为管道文件

3. find时间查找mtime

时间轴
如图,假设当前日期是10号,向前推6天(不包括当前日期)为4号,4号以前的日期用+6表示,4号之后的日期用-6表示,4号用6表示。
[root@MiWiFi-R3L-srv ~]# date
Sat Aug 31 00:00:49 CST 2019
# 系统当前日期为31号
[root@MiWiFi-R3L-srv ~]# for i in {1..31}; do date -s "2019/08/$i" ; touch file-$i ; done
# 通过循环创建file-1  , file-31
[root@MiWiFi-R3L-srv ~]# ls
file-1   file-14  file-19  file-23  file-28  file-4  file-9
file-10  file-15  file-2   file-24  file-29  file-5
file-11  file-16  file-20  file-25  file-3   file-6
file-12  file-17  file-21  file-26  file-30  file-7
file-13  file-18  file-22  file-27  file-31  file-8
[root@MiWiFi-R3L-srv ~]# find ./ -type f -mtime 6
# -mtime 6表示从当前日期向前推6天,即25号
./file-25
[root@MiWiFi-R3L-srv ~]# find ./ -type f -mtime +6 -name "file*"| xargs ls
# 筛选出6天之前的文件
./file-1   ./file-12  ./file-15  ./file-18  ./file-20  ./file-23  ./file-4  ./file-7
./file-10  ./file-13  ./file-16  ./file-19  ./file-21  ./file-24  ./file-5  ./file-8
./file-11  ./file-14  ./file-17  ./file-2   ./file-22  ./file-3   ./file-6  ./file-9
[root@MiWiFi-R3L-srv ~]# find ./ -type f -mtime -6 -name "file*"| xargs ls
# 筛选出最近6天的文件
./file-26  ./file-27  ./file-28  ./file-29  ./file-30  ./file-31

保留最近7天的文件

[root@MiWiFi-R3L-srv ~]# find ./ -name "file*" -type f -mtime +7 | xargs rm -f
[root@MiWiFi-R3L-srv ~]# ll
total 0
-rw-r--r--. 1 root root 0 Aug 24 00:00 file-24
-rw-r--r--. 1 root root 0 Aug 25 00:00 file-25
-rw-r--r--. 1 root root 0 Aug 26 00:00 file-26
-rw-r--r--. 1 root root 0 Aug 27 00:00 file-27
-rw-r--r--. 1 root root 0 Aug 28 00:00 file-28
-rw-r--r--. 1 root root 0 Aug 29 00:00 file-29
-rw-r--r--. 1 root root 0 Aug 30 00:00 file-30
-rw-r--r--. 1 root root 0 Aug 31 00:00 file-31

本地文件保留最近7天的备份文件, 备份服务器保留3个月的备份文件。(实际使用方案)

4. 按用户和组进行查找user group nouser nogroup

[root@MiWiFi-R3L-srv ~]# find /home/ -user ennan
# 查找属主是ennan的文件
[root@MiWiFi-R3L-srv ~]# find /home/ -group ennan
# 查找属组是ennan的文件
[root@MiWiFi-R3L-srv ~]# find /home/ -type d -user ennan -group ennan
# 查找属主是ennan,属组也是ennan的目录
[root@MiWiFi-R3L-srv ~]# find /home/ -nouser
# 查找没有属主的文件
[root@MiWiFi-R3L-srv ~]# find /home/ -nogroup
# 查找没有属组的文件
[root@MiWiFi-R3L-srv ~]# find / -nouser -nogroup
# 查找没有属主和属组的文件

查找后的处理动作

查找到一个文件后,需要对文件进行如何处理?

动作 含义
-ls 以长格式显示的方式打印查找到的内容
-exec 后面跟自定义 shell 命令(标准写法 -exec ;)

查找/var/log/类型是文件的,并且名称是.log结尾的,并且7天以前的,然后删除

[root@MiWiFi-R3L-srv ~]# find /var/log/ -type f -name "*.log" -mtime +7 | xargs rm -f
# 首选,速度最快
[root@MiWiFi-R3L-srv ~]# find /var/log/ -type f -name "*.log" -mtime +7 -exec rm -rf {} \;
# 次之,速度相对较慢
[root@MiWiFi-R3L-srv ~]# find /var/log/ -type f -name "*.log" -mtime +7 -delete
# 不推荐,删除查找到的文件(仅能删除空目录)

记得文件的内容是什么,但是不清楚文件名称是什么,也不知道路径在哪,怎么办?

[root@MiWiFi-R3L-srv ~]# find /etc/ -type f | xargs grep "log_group" --color=auto
/etc/audit/auditd.conf:log_group = root

find逻辑运算符

符号 作用
-a
-o
非,同-not
  1. 查找/home目录下,属主不是root的所有文件
[root@MiWiFi-R3L-srv ~]# find /home ! -user root -type f | xargs ls -l
  1. 查找/home目录下,属主属于ennan,并且大小大于1k的文件
[root@MiWiFi-R3L-srv ~]# find /home -user ennan -size +1k -type f | xargs ls -lh
-rw-rw-r--. 1 ennan ennan 2.5K Aug  8 10:35 /home/ennan/a
-rw-rw-r--. 1 ennan ennan 3.2K Aug  8 10:40 /home/ennan/c

练习题

1.查找/var目录下,属主不是root,且文件名不以f开头的文件

[root@MiWiFi-R3L-srv ~]# find /var ! -user root ! -name "f*" -type f

2.查找/var目录下属主为root,且属组为mail的所有文件

[root@MiWiFi-R3L-srv ~]# find /var -user root -group mail -type f

3.查找/var目录下不属于root、lp的所有文件

[root@MiWiFi-R3L-srv ~]# find /var/ ! -user root ! -user lp -type f

4.查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件

[root@MiWiFi-R3L-srv ~]# find /var/ -mtime -7 ! -user root ! -user postfix -type f

5.查找/etc目录下大于1M且类型为普通文件的所有文件

[root@MiWiFi-R3L-srv ~]# find /etc/ -type f -size +1M

6.将/etc/中的所有目录(仅目录)复制到/tmp下,目录结构不变

[root@MiWiFi-R3L-srv ~]# find /etc/ -type d | xargs -i mkdir -p /tmp/{}
# -i 表示 find 传递给xargs的结果 由{}来代替
或者
[root@MiWiFi-R3L-srv ~]# find /etc/ -type d -exec mkdir -p /tmp/{} \;

7.将/etc目录复制到/var/tmp/,/var/tmp/etc的所有目录权限777/var/tmp/etc目录中所有文件权限666

[root@MiWiFi-R3L-srv ~]# cp /etc/ /var/tmp/ -rp
[root@MiWiFi-R3L-srv ~]# find /var/tmp/etc/ -type d | xargs -i chmod 777 {}
[root@MiWiFi-R3L-srv ~]# find /var/tmp/etc/ -type f | xargs -i chmod 666 {}
或
[root@MiWiFi-R3L-srv ~]# find /var/tmp/etc/ -type d -exec chmod 777 {} \;
[root@MiWiFi-R3L-srv ~]# find /var/tmp/etc/ -type f -exec chmod 666 {} \;

8.保留/var/log/下最近7天的日志文件,其他全部删除

[root@MiWiFi-R3L-srv ~]# find /var/log/ -mtime +7 -type f | xargs rm -rf

9.创建touch file{1..10}10个文件, 保留file9,其他一次全部删除

[root@MiWiFi-R3L-srv ~]# find ./ ! -name "file9" -name "file*" | xargs rm -rf

10.解释如下每条命令含义

mkdir /root/dir1
touch /root/dir1/file{1..10}
find /root/dir1 -type f -name "file5"
find /root/dir1 ! -name "file5"
find /root/dir1 -name "file5" -o -name "file9"
find /root/dir1 -name "file5" -o -name "file9" -ls
find /root/dir1 \( -name "file5" -o -name "file9" \) -ls
find /root/dir1 \( -name "file5" -o -name "file9" \) -exec rm -rvf {} \;
find /root/dir1  ! \( -name "file4" -o -name "file8" \) -exec rm -vf {}  \; 

相关文章

  • day13-文件查找

    find查找 find命令可以根据不同的条件来进行查找文件,例如:文件名称、文件大小、文件修改时间、属主属组、权限...

  • Day13-文件查找

    find查找概述 为什么要有文件查找 因为平时创建过的文件忘记放在了什么位置,在用的时候找不到。所以可以用find...

  • day13-文件查找-笔记

    Day13-文件查找find 导读 上周回顾1.用户管理2.组的管理3.如何给用户提权4.权限管理今日内容1.为什...

  • 2017-07-29 文件查找和压缩

    (1)文件查找作用:在文件系统上查找符合条件的文件 文件查找:locate, find 非实时查找(数据库查找)...

  • 文件查找_CentOS 7

    which 查找命令文件所在位置 find 查找文件查找以a开头的文件 查找以权限为644的文件 查找日期相关的文...

  • Find 命令 搜索文件/文件夹 Linux/Mac

    Find 命令 根据文件名称模糊查询 查找属主文件 根据文件类型查找 根据文件大小查找 根据时间查找文件 根据权限...

  • week(4)

    Linux查找目录或文件 查找目录:find /(查找范围) -name '查找关键字' -type d 查找文件...

  • find查找文件以及文件夹

    查找文件夹 查找文件 格式

  • 十、文件查找,打包压缩

    文件查找 grep: 文件内容过滤 查找命令 查询命令和配置文件的位置 一、find详解: 文件查找,针对文...

  • shell命令整理(六)

    文件查找 grep: 文件内容过滤 查找命令 查询命令和配置文件的位置 一、find详解: 文件查找,针对文...

网友评论

      本文标题:day13-文件查找

      本文链接:https://www.haomeiwen.com/subject/pgdyjctx.html