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
下一篇 2016-06-23

相关推荐

  • LVS中nat和dr的原理与用法简述

      LVS中nat和dr的原理与用法简述 lvs-nat:   多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发; (1)RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP; (2)请求报文和响应报文都必须经由Director转发;Director…

    Linux干货 2016-10-30
  • Linux–各种常用表达式整理收集

    文字颜色设置IP地址获取随机口令查找替代等

    Linux干货 2017-12-10
  • VMWare网络连接的三种模式

    在创建虚拟机的时候我们会对网络适配器进行配置,那么网络适配器是什么呢?首先我们来简单介绍一下网络适配器。 计算机与外界局域网的连接是通过主机箱内插入一块网络接口板(或者是在笔记本电脑中插入一块PCMCIA卡)。而网络接口板又称为通信适配器或网络适配器(networkadapter)或网络接口卡NIC(NetworkInterface Card),但是更多的人…

    Linux干货 2017-07-12
  • 第3周作业

    一、列出当前系统上的所有已经登录的用户的用户名 [root@bogon tmp]# who | cut -d ” ” -f1 | sort -urootwing[root@bogon tmp]# who | cut -d ” ” -f1 | uniqrootwing 二、取出最后登录到当前系统的用户相关信息 […

    Linux干货 2017-07-25