linux基础之find文件查找
##1.find查找概述
####1.1为什么需要查找
1.很多时候我们可能会忘了文件所在的位置,此事情就需要通过find来查找
2.有时候需要通过内容查找到对应的文件,此时就需要通过find来查找
1.2为什么是find
因为find命令可以根据不同的条件来进行查找文件
例:
文件名称
文件大小
文件时间
属主属组
权限等等
可以通过以上几种方式查找文件,从而实现精准定位
####1.3find命令语法
find + 路径(path...) + 选项(options) + 表达式(expression) + 动作(action)
##2.find查找示例
2.1find基于名称查找
1.创建文件
touch /etc/sysconfig/network-scripts/{ifcfg-eth1,IFCFG-ETH1}
2.查找/etc目录下包涵ifcfg-eth0名称的文件
[root@node: etc]#find /etc -name "ifcfg-eth1"
/etc/sysconfig/network-scripts/ifcfg-eth1
3.-i忽略大小写
查找/etc目录下包涵ifcfg-eth名称所有文件
[root@node: etc]#find /etc i-name "ifcfg-eth1*"
2.2find基于大小查找
+5 大于5M
-5 小于5M
5 等于5M
查找大于5M的文件
[root@node: etc]#find /etc -size +5M
小于5M则是—,等于5则不加
查找大于5M小于7M
创建一个6M的文件
[root@node: etc]#dd if=/dev/zero of=/etc/big count=6M bs=1
查找大于5M小于7M
[root@node: etc]#find /etc -size +5M -a -size -7M | xargs ls -lh
-rw-r--r--. 1 root root 6.0M Jul 17 15:04 /etc/big
####2.3find基于类型查找
文件
[root@node: ~]#find /dev -type f
目录
[root@node: ~]#find /dev -type d
l 链接
[root@node: ~]#find /dev -type l
b块设备
[root@node: ~]#find /dev -type b
c字符设备
[root@node: ~]#find /dev -type c
s套接字
[root@node: ~]#find /dev -type s
p管道文件
[root@node: ~]#find /dev -type p
####2.4find基于时间查找
1.创建测试文件(后期shell会讲)
[root@node: ~]#for i in {01..10};do date -s 201904$i && touch file-$i;done
查找7天以前的文件(不会打印当天的文件) 7天以前的查找出来,然后删除 == 保留了最近7天的数据
[root@node: ~]#for i in {01..10};do date -s 201904$i && touch file-$i;done
3.查找最近7天的文件,不建议使用(会打印当天的文件)将最近7天的数据给列出来,如果删除,会将当天的数据删除
[root@node: ~]#find ./ -iname "file-*" -mtime -7
查找第7天的文件(不会打印当天的文件)
[root@node: ~]#find ./ -iname "file-*" -mtime 7
查找最近122分钟发生变化的文件
[root@node: ~]#find ./ -type f -mmin -122
查找多少分钟内发生过修改的文件
[root@node: ~]#find ./ -type f -mmin -30
查找系统有哪些命令在最近多长时间内,发生过变化
[root@node: ~]#find /bin/ /sbin/ -type f -mmin -5
面试题:查找/var/log下所有以.log结尾的文件,并保留最近7天的log文件
[root@node: log]#find /var/log -type f -name "*.log" -a -mtime +7 -delete
[root@node: log]#find /var/log -type f -name "*.log" -a -mtime +7 | xargs rm -f
####2.5find基于用户查找
-user 属主
-group 属组
-nouser 不属主
-nogroup 不属组
例:
查找/home目录下属主是jake的文件
[root@node: log]#find /home -user jake
查找属组是admin
[root@node: log]#find /home -group admin
查找属主是jake,属组是admin
[root@node: log]#find /home -user jake -group admin
查找属主是jake,并且属组是admin
[root@node: log]#find /home -user jake -a -group admin
查找没有属主
[root@node: log]#find /home -nouser
查找没有属组
[root@node: log]#find /home -nogroup
查找没有属主或属组
[root@node: log]#find /home -nouser -o -nogroup
####2.6find基于权限查找
-perm [/|-]MODE
MODE:精确权限匹配 如644
-MODE: 每一类对象都必须同时拥有指定的权限;(并且的意思)
/MODE:任何一类(UGO)只要有一位匹配即可;(或者的关系)
例: 精确
[root@node: ~]#find /root -type f -perm 644 -ls
-包含: (u涵盖6,并且g涵盖4,并且o涵盖4)
[root@node: ~]#find /root -type f -perm -644 -ls
/或者(u为6,或者g为4,或者o为0)
[root@node: ~]#find /root -type f -perm /640 -ls
特殊权限(最低权限是4000 4755也满足需求)
[root@node: ~]#find /usr/bin/ /usr/sbin/ -type f -perm -4000 -ls
root@node: ~]#find /usr/bin/ /usr/sbin/ -type f -perm -2000 -ls
[root@node: ~]#find /usr/bin/ /usr/sbin/ -type f -perm -1000 -ls
####2.7find逻辑运算符
-a 与(并且)
-o 或(或者)
-not|! 非(取反)
例:查找当前目录下,属主不是root的所有文件
[root@node: ~]#find . -not -user root
查找当前目录下,属主属于hdfs,并且大小大于1k的文件
[root@node: ~]#find . -type f -user hdfs -a -size +1k
查找当前目录下的属主为root或者以xml结尾的普通文件
[root@node: ~]#find -type f -a -user root -o -name "*xml"
##3. find动作处理
查找到一个文件后,需要对文件进行如何处理find的默认动作是-print
动作 含义
-print 打印查找到的内容(默认)
-ls 以长格式显示的方式打印查找到的内容
-delete 删除查找到的文件(仅能删除空目录)
-ok 后面跟自定义shell命令(去提示是否操作)
-exec 后面跟自定义shell命令(标准写法-exec ;)
####3.1find结合exec
使用-exec实现文件拷贝和删除
[root@node: ~]#find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \;
[root@node: ~]# find /etc -name "ifcfg*" -exec rm -f {} \;
[root@node: ~]#find /etc -name "ifcfg*" -exec mv -rvf {} /tmp \;
####3.2find结合xargs
xargs将前者命令查找到的文件作为一个整体传递后者命令的输出,所以其操作的性能极高
|xargs rm -f 1 2 3 4 5 6 7 8 9 10 11 100000
exec是将文件一个一个的处理,所以处理性能极低
####3.3find结合grep
当忘记重要配置1文件存储路径时,可以通过搜索关键字获取文件其路径
[root@node: ~]#find /code -type f |xargs grep -R "MySQL_PASSWORD"
[root@node: ~]#find /etc/ -type f | /etc/pass: oldxu.com
原文地址:https://www.cnblogs.com/smallxu/p/15026882.html
- Python读书笔记7
- 2017年人工智能在游戏领域打败人类,未来我们将何去何从?
- 3杂再破市场行情 6位数结拍
- 将永久存储添加到Red Hat CDK Kit 3.0
- ASP.NET MVC的Razor引擎:RazorView
- 三分钟学会 Java 单元测试
- 革了短信的命之后,微信开始把枪口对准了应用市场
- 建构微服务的第一步: 微服务哪里来?
- 最新机器学习必备十大入门算法!都在这里了
- ASP.NET MVC的Razor引擎:IoC在View激活过程中的应用
- 深度学习笔记:深度学习在计算机视觉的应用
- 快速添加永久存储到到Minishift / CDK 3
- 张小龙发布2018微信全新计划(内附演讲全文)
- 使用JClouds在Java中获取和发布云服务器
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android实现手电筒电源键关闭功能
- Android实现保持屏幕常亮功能
- Android开发实现的几何图形工具类GeometryUtil完整实例
- Android自定义View倒计时圆
- Android开发实现的IntentUtil跳转多功能工具类
- Android端“被挤下线”功能的单点登录实现
- Android轻松实现多语言的方法示例
- Android开发实现去除bitmap无用白色边框的方法示例
- Android开发实现的内存管理工具类
- Android日期和时间选择器实现代码
- Android开发实现ImageView加载摄像头拍摄的大图功能
- Android开发实现的Intent跳转工具类实例
- Android开发中的文件操作工具类FileUtil完整实例
- Android开发中超好用的正则表达式工具类RegexUtil完整实例
- Android ijkplayer的使用方法解析