find查找

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

(0)
Double fDouble f
上一篇 2017-05-08 19:00
下一篇 2017-05-08 20:08

相关推荐

  • shell脚本编写-1练习题

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 #!/bin/bash echo “the hostname is:`hostname`” echo “the ip address is:`ifconfig | sed –n ‘2p’ |sed…

    Linux干货 2016-08-15
  • 小巧精悍——常见文本处理工具用法及技巧总结

    小巧精悍——常见文本处理工具用法及技巧总结 Linux最重要的哲学思想就是:一切皆文件。可见文件及文件操作在Linux当中是多么的重要。在Linux系统中我们也会经常用到各种文本文件处理的操作,熟练使用这些小巧精悍的文本处理工具,在关键时刻往往展现非凡的神奇功效。常见文本处理小工具:cat、hexdump、nl、less、head、tail、cut、tr、r…

    Linux干货 2016-11-05
  • MAN手册各章节功能介绍及快捷键键位整理

    Linux系统中man命令是用于查询命令使用手册的,使用格式 man + 命令。 当使用man命令之后,系统就会在指定的路径中查询命令的使用手册。其中制定路径为$PATH变量指定的路径,或者/etc/man.config文件中MANPATH中指定的路径  其中/etc/man.config中有如下内容: MANPATH /usr/man …

    Linux干货 2016-10-17
  • 磁盘分区磁盘管理及挂载

    磁盘分区 fdisk提供交互式接口管理分区,操作均在内存中完成,没有直接同步到磁盘;直到使用w命令保存至磁盘中。 语法: 1.查看分区使用信息:     fdisk -l [-u] [device…]:列出指定磁盘设备上的分区情况; 2.管理分区    fdisk d…

    Linux干货 2016-08-31
  • N22-第6周作业-冥界之王

    请详细总结vim编辑器的使用并完成以下练习题1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;    [root@CentOS6 /]# cp /etc/rc.d/rc.sysinit /tmp…

    Linux干货 2016-09-19
  • Linux发展史

    一、简单的说: 一个名叫Linus Torvalds的芬兰大学生想要了解Intel的新CPU386。他认为比较好的学习方法是自己编写一个操作系统的内核。出于这种目的,加上他对当时Unix 变种版本(即Minix)对于80386类机器的脆弱支持十分不满,他决定要开发出一个全功能的、支持POSIX标准的、类Unix的操作系统内核,该系统吸收了BSD和S…

    Linux干货 2016-10-20