Linux系列(12) - find
简述
find搜索文件,搜索方式丰富,遍历给定范围的所有目录下的文件(避免大范围的搜索,会非常浪费系统资源,建议不在直接在“/”目录下搜索)
命令格式
基本使用
格式:find 【搜索范围】【搜索条件】【文件名】;
例子:find /home -name [文件名];选项-name 根据文件名称查找;
注意:find搜索默认是完全匹配;
通配符
如果需要进行模糊查询,需要添加通配符,通配符有以下3种,使用通配符文件名必须用双引号“”引起来。跟文件名搜索条件【-name】【-iname】配合使用;
选项
- “*”:匹配任意字符,例:find /home -name “*test*”,显示所有名字开头带test的文件;或例:find /home -name “*”,home目录下的所有文件,包括隐藏文件。
- “?”:匹配任意一个字符,
- “[]”:匹配任意一个中括号内的字符,例:find /home -name “*test[12]”,显示test1和test2文件;或find /home -name “[12]*”,显示以1和2开头的文件。
- 组合使用:例:find /home -name “*【12】”,显示所有1和2结尾的文件
例子:
- find /root -name "findtest*":在root目录下搜索开头带findtest的所有文件
- find /root -name "findtest?.test":在root目录下搜索文件名为“findtest【随便什么字符】.test”的所有文件
- find /root -name "[12]test*":在root目录下搜索1或2开头,后面跟着test【后面不管有没有,不管是啥】的所有文件
find 按文件时间来搜索
选项
- atime 文件访问时间
- ctime 改变文件属性
- mtime 修改文件内容
例子
- find /home -mtime +2 :在home目录下,查找2天前修改的文件
- find /home -mtime 2 :在home目录下,查找2天前当天修改的文件
- find /home -mtime -2 :在home目录下,查找2天内修改的文件
find常用搜索条件
选项
-name:根据文件名查找,区分文件名大小写
-iname:不区分要搜索的文件名大小写格式
-user [用户名]:在搜索范围内查找属于[用户]的所有文件find /root -user root 搜索root目录下的所有属于root用户的文件
-nouser:搜索没有所属者的文件,liunx中,每个文件都有所属者,如果没有,那么一般都是垃圾文件,但还是有特例的,比如内核产生的文件,就没有所属者,一般在proc和sys目录下;还有外来文件,也就是U盘拷入的文件也会忽略所有者。
-size [文件大小][大小单位]:搜索什么单位下多大的文件;单位k用小写的,单位M用大写的;不带单位默认按扇区的计算方式算大小(自行百度)
例子
- find /root -name 1test.test:搜索root目录下,文件名为1test.test的所有文件
- find /root -iname 1TEST.TEST:搜索root目录下,文件名为1test.test的所有文件;文件名不区分大小写
- find /root -user root:搜索root目录下的所有属于root用户的文件
- find /root -nouser:搜索root目录下没有所属者的文件
- find /root -size 4k:搜索root目录下文件大小等于4k的文件
- find /root -size +2k:搜索root目录下文件大小,大于2k的文件
- find /root -size -2k:搜索root目录下文件大小,小于2k的文件
多个查询条件组合使用
选项
- -a :表示and,与的关系
- -o: 表示or,或的关系
- -exec【另外外一个条件】 {} \:这个得用例子说明,比如:find /etc -size +20k -a -size -50k -exec rm -rf {} \在/etc目录下搜索文件大小大于20k并且小于20k得文件,找到后删除这些文件; -exec {} \; 固定格式,表示前面的搜索结果放到-exec后面的命令里面执行;不是所有的命令-exec都可以执行,至少我发现mv不行;重要一点最后的;分号别忘了
例子
find /root -size -5k -a -name "1tes*":搜索root目录下文件大小小于5k并且文件名以“1test”开头的所有文件
find /root -size +5k -o -name "[12]test*":搜索root目录下文件大小大于5k或者文件名以“1”或者“2”开头,后面紧跟“test”的所有文件
find /root -size -5k -a -name "1test*" -exec rm -rf {} \;:搜索root目录下文件大小小于5k并且文件名以“1test”开头的所有文件,找到后删除这些文件
最新文章
- hdu 1026(Ignatius and the Princess I)BFS
- &;,引用复制@,忽略错误提示
- CPU工作状态的知识介绍
- 【转】HTML网页中插入视频各种方法
- MySQL 记录不存在时插入 记录存在则更新的实现方法
- iOS 归档
- static 在多台下的特性
- 1.servlet hello实例---HelloServlet
- speex 回声消除的用法
- 在网页边角添加GitHub链接图标
- WPF 实现换肤功能
- 如何给PDF文件制作书签
- Android dp、dip、dpi、px、sp简介及相关换算,及其应用实例
- 002 如何在一台PC上装两个版本的python
- 网络编程 -- RPC实现原理 -- Netty -- 迭代版本V2 -- 对象传输
- win7 java环境变量配置
- android studio 如何让包名展开
- R因子
- centos7 mysql的安装
- 润乾V4报表放入WEBINF保护目录下如何实现