find查找是生产中最常见的日志查找工具

下面看看它的用法

基本用法:

find    查找路径    查找标准    查找到以后的处理动作

查找路径:需要被查找的文件所在的路径,一定是个目录,默认情况下为当前的目录

查找的标准:查找的时候用什么方式去查找

处理动作:文件查找完毕后,需要对查找出来的文件进行处理的动作,默认情况下为显示

查找深度的限制:

可以对查找中文件路径的深度进行控制

-maxdepth  #

查找标准:

查找的标准一般包括以下的几部分:

名字,时间,权限,类型,大小,属主和属组

名字:

-name “filename”

基于文件名查找的时候支持通配符

*,?,[] ,  [^]

-iname    文件名匹配时不区分大小写

-regex     基于正则匹配文件名正则来查找

类型:

-type   基于文件的类型查找

f    普通文件

d    目录

s    套接字文件

l     链接文件

这里有个注意点 :

find 执行查找类型的时候是检测文件本身的类型,比如A是链接文件A–>B,那么find判断的是文件A的类型

与之相似的有一个叫 test 的命令,专用于检测文件的类型,不过test检测的时候是检测B的类型

权限:

-perm  MODE

mode   全部权限吻合才行

/mode  给出的权限中只要满足一个即可

-mode   文件权限包含时,即权限只能多,不能少

时间:

按时间来查找

-mtime

-ctime

-atime

[+|-]#

-mmin (分钟计)

-cmin

-amin

三种时间后面可以跟 + –  或者不加

+  代表的是超过

–   在…….的范围内

不加为精确匹配

大小:

-size

利用大小查找的时候需要注意的是,大小的精确定位,+  和 – 的区别

查找10K的时候,是9-10K 的文件,而如果是  -10K   的话,  代表的是0-9K,  +10K代表的是10K以上

根据这个原理,查找1G的文件,千万别写成1G,因为这样会将几K的文件都列出来,正确的写法是1024M

如果要精确到字节那么需要使用  c 为单位

属主和属组:

-uid n :n 为数字,这个数字是用户的账号 ID,亦即 UID ,这个 UID 是记录在 /etc/passwd 里面与账号名称对应的数字。

-gid n :n 为数字,这个数字是组名的 ID

-user name :name 为使用者账号名称

-group name:name 为组名喔,例如 users ;

-nouser :寻找文件的拥有者不存在 /etc/passwd 的用户

-nogroup :寻找文件的拥有群组不存在于 /etc/group 的文件

其中 -nouser  和  – nogroup 是可能存在的,比如你在网上下载了一个软件,该软件的拥有者并不再系统的用户中,

或者事先已经有个账户,且在系统中运行产生了各种数据,后来你把用户给删除了,那么这些数据还在,此时就需要

用到上述两个指令

执行动作

-print:显示

-ls    类似ls  -l 的方式显示文件

-ok  COMMAND  {}   \;  其中的{}是用来引用需要修改文件名

-exec COMMAND {}  \;  作用同 -ok  稍有区别的是-ok需要用户每步都确认,而-exec不需要用户的确认

多个条件之间的逻辑组合

-a  与关系,多个条件同时满足的时候才满足要求

-o  或关系,多个条件中一个条件满足就行

!  not   :  非关系,即取反

德尔摩根定律:

(非P)或(非Q)=非(P且Q)

(非P)且(非Q)=非(P或Q)

使用-o条件时候需要注意的是   A -O B C 这个的逻辑是B与C 先相与,然后再进或的运算 如果需要A和B 或

运算之后再进行C操作,需要将A和B用括号括起来,且括号应该转义

过滤机制:

-path  “/path/to/directory”  -a  -prune

查找的时候排除目录中的某一个子目录

find实例运用:

(1) 查找/etc目录下面,不是以.conf结尾的文件

find  /etc  -not  -name  “*.conf”

find  /etc  !  -name  “*.conf”

(2)寻找/home目录下,既不是用户joe  也不是用户 jane的文件

find  /home  -not  -user  joe   -a  -not   -user  jane

find  /home -not \( -user joe -o -user jane \)   # 括号里面的内容不能紧贴括号,要有空格

括号需要转义

(3)找出/tmp目录下面,属主不是root,且文件名不以f开头的文件

find  /tmp  -not  \( -user   root   -o   -name “f*” \)  -ls

find  /tmp  \( -not -user root -a  -not  -name  “f*” \)   -ls  #注意括号,尽量使用括号括起来

(4)搜索/etc下面除了/etc/sane.d 目录下的所有的以.conf结尾的文件

find  /etc   -path “/etc/sane.d”   -a   -prune   -o  -name  “*.conf”   -print

(5)搜索/etc下面除了/etc/sane.d 目录和/etc/modprobe.d以外其他目录下的所有的以.conf结尾的文件

find  /etc  \(  -path  “/etc/sane.d”  -o  -path  “/etc/modprobe”  \)   -a  -prune   -o   -name  “*.conf”

(6)备份配置文件,添加.orig扩展名

find  /etc   -name  “*.conf”  -exec  cp {}   {}.orig   \;

(7)在家目录下面寻找可以被其他用户写入的文件,去除写的权限

find  /hone   -perm  -002  -exec chmod o-x {}  \;

原创文章,作者:Double f,如若转载,请注明出处:http://www.178linux.com/75016

linux搜索日志组合条件,find查找相关推荐

  1. [Linux]根据条件或查找日志命令cat,tail,vim,grep

    根据条件或查找日志命令cat,tail,vim,grep 实时查看日志 根据条件全文搜索 cat vim 实时查看日志 tail -f boot.log 根据条件全文搜索 cat 关键词高亮显示 ca ...

  2. Linux 服务器日志文件查找技巧精粹

    用来在日志文件里搜索特定活动事件的工具不下几十种,本文将介绍搜索日志文件时应该采取的策略.然后,通过几个具体示例介绍一些使用grep命令手动搜索日志文件的办法.接下来,我们将看到 logwatch工具 ...

  3. linux下日志文件的查找(tail和grep)

    grep的使用: grep参数 -e: 使用正则搜索 -i: 不区分大小写 -v: 查找不包含指定内容的行 -w: 按单词搜索 -c: 统计匹配到的次数 -n: 显示行号 -r: 逐层遍历目录查找 - ...

  4. linux搜索文件内容含有星号,文本内容查找grep、文件查找find、正则匹配

    一.文本内容查找工具 grep grep   egrep (文本过滤)   fgrep (不支持正则) 对文本的内容按照指定的匹配模式基于行来进行筛选 格式     grep [选项] 模式 文件 选 ...

  5. 多条件查询日志linux,linux 多文件多条件查看日志命令

    linux 多文件多条件查看日志命令 1.多文件查看 cat 20200925.log 20200926.log 20200927.log | grep '123' 2.过滤多条件 #'123' &a ...

  6. shell中用grep查找并且不输出_grep awk 搜索日志常用命令

    0 grep 常用参数 --color:高亮显示匹配到的字符串 -v:显示不能被pattern匹配到的 -i:忽略字符大小写 -o:仅显示匹配到的字符串 -q:静默模式,不输出任何信息 -A#:aft ...

  7. linux查看日志的几种命令,Linux查看日志三种命令(转载)

    第一种:查看实时变化的日志(比较吃内存) 最常用的: tail -f filename (默认最后10行,相当于增加参数 -n 10) Ctrl+c 是退出tail命令 其他情况: tail -n 2 ...

  8. linux查看php日志命令,linux查看日志的三种命令是什么,linux查看进程命令

    linux查看日志的三种命令是什么Linux查看日志的三个命令是什么,linux查看日志有三个命令:1.查看实时更改日志,代码为[tail-f filename]:2.搜索关键字附近的日志代码为[ca ...

  9. Linux搜索文件和文件夹的方法

    Linux 搜索文件和文件夹的 4 种简单方法 英文:Prakash Subramanian,翻译:Linux中国/geekpi linux.cn/article-10362-1.html Linux ...

最新文章

  1. java中标识符,关键字,数据类型
  2. 【2012百度之星/资格赛】H:用户请求中的品牌 [后缀数组]
  3. 《统计学习方法》资源
  4. 还在担心服务挂掉?Sentinel Go 让服务稳如磐石
  5. JavaScript递归应用与实践
  6. 2018/7/10-纪中某C组题【jzoj3792,jzoj3793,jzoj3794】
  7. HTML 表单和输入
  8. 存储如何让文件小一点_如何使用Redis接管文件存储
  9. 洛谷 P3952时间复杂度 (本地AC测评RE的伪题解)
  10. 艾伟_转载:Cookie是什么?用法是怎样?与SESSION有什么区别?(二)
  11. css 背景色半透明 子元素不透明
  12. HTML5变化 (一)
  13. 阿里云资深技术专家何勉:研发效能提升的系统方法
  14. TMDB 5000电影数据集
  15. ‘scope‘ is defined but never used (vue/no-unused-vars) at src\views\manage\List.vue:18:51: 解决方法
  16. 数据库原理与应用教程(何玉洁 第四版)第七章课后题
  17. 牛客小白月赛21 I题
  18. ps无法启动因为计算机中丢失api ms,解决win8下ps提示“丢失api-ms-win-crt-runtime-l1-1-0.dll”的方法...
  19. 关于Flask框架中启动Scrapy爬虫框架时的几种问题的解决
  20. 常见职位的英文简称_常见职位英文缩写()

热门文章

  1. [故障解决]Mysql爆出ERROR 1044 (42000)的错误怎么办?
  2. DBA_Oracle Table Partition表分区概念汇总(概念)
  3. navicat连接oracle 报 ORA-12737 set CHS16GBK
  4. Windows 7下实现×××连接自动创建
  5. 数据图表可视化_数据可视化如何选择正确的图表第1部分
  6. 算法 从 数中选出_算法可以选出胜出的nba幻想选秀吗
  7. leetcode43. 字符串相乘
  8. leetcode350. 两个数组的交集 II(hashmap)
  9. express 路由中间件_Express通过示例进行解释-安装,路由,中间件等
  10. 如何成为一名有效的软件工程师