day13-文件查找

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 {}  \; 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342