find常用用法

find:

实时查找工具,通过遍历指定路径下的文件系统完成文件查找;

工作特点:

相对于locate查找速度略慢;

精确查找;

实时查找;

语法:

find [查找路径] [OPTION]…  [查找条件] [处理动作]

查找路径:指定具体目标路径;默认为当前目录;

查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件;

处理动作:对符合条件的文件做什么操作;默认输出至屏幕;

        

查找条件:

根据文件名查找:

-name "文件名称":支持使用glob

*, ?, [], [^]

[root@HJZX-TEST plugin]# find / -name fstab
/etc/fstab

-iname "文件名称":不区分字母大小写

-regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称;

[root@localhost ~]# find / -regex fstab                                      
[root@localhost ~]# 
[root@localhost ~]# find / -regex .*fstab.*                  
/etc/fstab
/lib/udev/fstab_import
/lib/udev/rules.d/79-fstab_import.rules
/usr/share/man/man8/fstab-decode.8.gz
/usr/share/man/man5/fstab.5.gz
/usr/share/vim/vim72/syntax/fstab.vim

根据属主、属组查找:

-user USERNAME:查找属主为指定用户的文件;

group GRPNAME: 查找属组为指定组的文件;

[root@localhost home]# find /tmp -user gukai
/tmp/cc
/tmp/bb
/tmp/aa

-uid UserID:查找属主为指定的UID号的文件;

-gid GroupID:查找属组为指定的GID号的文件;

-nouser:查找没有属主的文件;

-nogroup:查找没有属组的文件;

[root@localhost home]# find /tmp -nouser                   属主和属组 被删除 
/tmp/cc
/tmp/bb
/tmp/aa
[root@localhost home]# ll /tmp     
total 20
drwxrwxr-x. 2  500  500 4096 Jun 21 15:23 aa
drwxrwxr-x. 2  500  500 4096 Jun 21 15:23 bb
drwxrwxr-x. 2  500  500 4096 Jun 21 15:23 cc

根据文件类型查找:

-type TYPE:

f: 普通文件

d: 目录文件

l: 符号链接文件

s:套接字文件

b: 块设备文件

c: 字符设备文件

p: 管道文件

[root@localhost home]# find /etc/sysconfig/ -type l
/etc/sysconfig/network-scripts/ifup
/etc/sysconfig/network-scripts/ifdown
/etc/sysconfig/network-scripts/ifdown-isdn
/etc/sysconfig/network-scripts/ifup-isdn
/etc/sysconfig/selinux

组合条件:

需要一些集合知识帮助理解,

与:-a         求交集

或:-o         求并集

非:-not, !    求补集

!A -a !B = !(A -o B)

!A -o !B = !(A -a B)

找出/tmp目录下,属主不是root,且文件名不是fstab的文件;

find /tmp \( -not -user root -a -not -name 'fstab' \) -ls
find /tmp -not \( -user root -o -name 'fstab' \) -ls
[root@localhost home]# find /tmp \( -not -user root -a -not -name 'fstab' \) -ls
1052517    4 drwxrwxr-x   2 500      500          4096 Jun 21 15:23 /tmp/cc
1052516    4 drwxrwxr-x   2 500      500          4096 Jun 21 15:23 /tmp/bb
1052515    4 drwxrwxr-x   2 500      500          4096 Jun 21 15:23 /tmp/aa
[root@localhost home]# find /tmp -not \( -user root -o -name 'fstab' \) -ls
1052517    4 drwxrwxr-x   2 500      500          4096 Jun 21 15:23 /tmp/cc
1052516    4 drwxrwxr-x   2 500      500          4096 Jun 21 15:23 /tmp/bb
1052515    4 drwxrwxr-x   2 500      500          4096 Jun 21 15:23 /tmp/aa

上面连个命令结果一样

根据文件大小来查找:

-size [+|-]#UNIT

常用单位:k, M, G

#UNIT: (#-1, #]

-#UNIT:[0,#-1]

+#UNIT:(#,oo)

[root@HJZX-TEST ~]# find /etc -size 6k -ls              
1704278    8 -rwxr-xr-x   1 root     root         5178 Nov 22  2013 /etc/pki/tls/misc/CA
1967976    8 -rw-r--r--   1 root     root         5596 Jun 20  2013 /etc/my.cnf.d/modprobe.d/dist.conf
1706978    8 -rw-r--r--   1 root     root         5380 Jul 24  2015 /etc/rdma/fixup-mtrr.awk
1704290    8 -rw-r--r--   1 root     root         5596 Jun 20  2013 /etc/modprobe.d/dist.conf
1704267    8 -rw-r--r--   1 root     root         5325 Nov 11  2010 /etc/fonts/fonts.conf
1704798    8 -rwxr-xr-x   1 root     root         5430 Oct 10  2013 /etc/sysconfig/network-scripts/ifdown-eth
1705811    8 -rw-------   1 root     root         5640 Jan 23  2015 /etc/selinux/targeted/modules/active/homedir_template
1707018    8 -rw-r--r--   1 root     root         6111 Jul 24  2015 /etc/pcp.conf
····

上面搜出的结果是大小为 (5k,6k]的文件

find /etc -size  -6k  搜索 /etc 下大小为 [0,5k]的文件

find /etc -size  -6k  搜索 /etc 下大小为 (6k,-oo)的文件

根据时间戳:

以“天”为单位;

-atime [+|-]#,  

#: [#,#+1)

+#: [#+1,oo]

-#: [0,#)

-mtime

-ctime

以“分钟”为单位:

-amin

-mmin

-cmin

假设当前时间为2016-06-17
10:10:10

find ./ 
-atime -2            //数字单位为天数.

-2:[0,48)从此刻算起,两天之内  2016-06-15
10:10:10–2016-06-17
10:10:10 (且不包括这两个时刻)

2:[48,72])从此刻算起,前三天的那一天   2016-06-14
10:10:10–2016-06-15
10:10:10

+2:(72,oo)从此刻算起,两天之前的任何时间了  2016-06-14
10:10:10之前的任何时间了

根据权限查找:

-perm [/|-]MODE

MODE: 精确权限匹配

/MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,之前是+MODE在centos7中已废弃;

-MODE:每一类对象都必须同时拥有为其指定的权限标准。

例:

查找/etc目录下至少有一类用户没有执行权限的文件;

find /etc -not -perm -111

查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件;

find /etc/init.d -perm -113

根据目录深度查找:

-maxdepth #     第几层目录

例如 

find /home -maxdepth 1   /home下一层目录的文件和目录

        处理动作:

-print:默认的处理动作,显示至屏幕;

-ls:类似于对查找到的文件执行“ls -l”命令;

-delete:删除查找到的文件;

-fls /path/to/somefile:查找到的所有文件的长格式信息保存至指定文件中;

-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令;

对于每个文件执行命令之前,都会交互式要求用户确认;

-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令; 

{}: 用于引用查找到的文件名称自身;

                

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

(0)
zxhyzxhy
上一篇 2016-06-23 11:13
下一篇 2016-06-23 11:13

相关推荐

  • bash特性

    bash特性之一:命令别名      获取当前用户可用的别名的定义:  bash的特性之二:命令历史      命令语法格式:      history [-c] [-d OFFSET] [n]&nb…

    Linux干货 2016-11-06
  • lvs-dr 原理与配置

    Lvs-dr 原理与配置 目录     1、ARP介绍     2、DR模式数据包请求响应流程     3、配置过程    4、总结 1、ARP协议介绍 功能:局域网内,根据IP地址获取MAC地址。 互联网上面…

    Linux干货 2015-09-16
  • 自制kickstart文件——完成CentOS系统的自动化安装

    CentOS 系统安装: ·安装程序:anaconda         bootloader–>kernel(initrd(rootfs))–>anaconda ·anaconda:<两种模式>    …

    Linux干货 2016-09-16
  • 【福利招聘】上海,平安,初级,监控运维,年终4-5个月 7- 14k

    岗位职责:1. 执行7X24小时网络监控制度,包括节假日的值班工作;2.负责业务及运维平台部署实施及基础信息采集,配合业务需求逐步实现运维自动化和提高运维效率;3.负责对运营业务进行日常监控、基础运维工作;对综合型疑难故障进行快速有效的定位和故障分析、及时排查,处理,推动故障改进,保障业务运营平台的正常运行;4.负责针对监控系统的数据收集和初步数据分析,配合…

    Linux职位 2016-04-18
  • RHCE基础实验

    实验:配额实现 1. 启用配额功能 vim /etc/fstab defaults usrquota,grpquota mount -o remount /home 2. 创建配额数据库 quotacheck -cug /home 3. 启用数据库 quotaon /home quotaon -p /home 查看 4. edquota wang setqu…

    Linux干货 2017-05-02
  • 脚本进阶

    1、写一脚本,用ping命令测试192.168.1.1-192.168.1.10之间的所有主机的在线状态,在线的主机使用绿色表示,不在线的主机使用红色表示   2、如何给网络配置多个地址,有哪些方式   3、写一个脚本 (1)假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干 (2)显示所有以K开头的文件…

    2018-01-08