简述

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”开头的所有文件,找到后删除这些文件

最新文章

  1. hdu 1026(Ignatius and the Princess I)BFS
  2. &,引用复制@,忽略错误提示
  3. CPU工作状态的知识介绍
  4. 【转】HTML网页中插入视频各种方法
  5. MySQL 记录不存在时插入 记录存在则更新的实现方法
  6. iOS 归档
  7. static 在多台下的特性
  8. 1.servlet hello实例---HelloServlet
  9. speex 回声消除的用法
  10. 在网页边角添加GitHub链接图标
  11. WPF 实现换肤功能
  12. 如何给PDF文件制作书签
  13. Android dp、dip、dpi、px、sp简介及相关换算,及其应用实例
  14. 002 如何在一台PC上装两个版本的python
  15. 网络编程 -- RPC实现原理 -- Netty -- 迭代版本V2 -- 对象传输
  16. win7 java环境变量配置
  17. android studio 如何让包名展开
  18. R因子
  19. centos7 mysql的安装
  20. 润乾V4报表放入WEBINF保护目录下如何实现

热门文章

  1. KNeighborsClassifier()的参数无效错误
  2. JavaSE-方法
  3. Nmap 常用命令及抓包分析
  4. S3C2440—12.按键中断
  5. bluecms安装错误一记
  6. 从零开始实现简单 RPC 框架 4:注册中心
  7. NOIP 模拟 $30\; \rm 毛一琛$
  8. 题解 P3322 [SDOI2015]排序
  9. QT从入门到入土(九)——TCP/IP网络通信(以及文件传输)
  10. 深入浅出Mybatis系列(四)---配置详解之properties与environments