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脚本编程之数组、高级字符串处理、高级变量操作、用户环境配置

    概述:     承接之前脚本编程部分,本篇将介绍一下脚本编程基础语法的最后一部分内容,具体分为:         1、数组简介         2、高级字符串处…

    Linux干货 2016-08-24
  • Unix发展与现状

    Unix 简史 1965年时,贝尔实验室(Bell Labs)加入一项由奇异电子(General Electric)和麻省理工学院(MIT)合作的计划;该计划要建立一套多使用者、多任务、多层次(multi-user、multi- processor、multi-level)的MULTICS操作系统。直到1969年,因MULTICS计划的工作进度太慢,该计划就…

    Linux干货 2015-09-22
  • 网络配置——IP划分网络基础

    Linux网络属性配置: 计算机网络: TCP/IP:协议栈         ISO,OSI:协议栈学习 MAC:Media Access Control          48bits: &nbsp…

    Linux干货 2016-09-07
  • 计算机的组成及其功能

        计算机是一种能接受和存储信息,并按照存储在其内部的程序对输入的信息进行加工、处理,然后把处理结果输出的高度自动化的电子设备。计算机是由运算器,控制器,存储器,输入装置和输出装置五大部件组成,每一部件分别按要求执行特定的基本功能。如下图所示: (1)  运算器或称算术逻辑单元(Arithmetical and Logica…

    Linux干货 2016-10-30
  • Centos6.5利用RubyGems的fpm制作zabbix_agent的rpm包,并使用ansible批量部署

    一、 搭建rpm包制作环境 安装gcc [root@lvs1 ~]# yum install gcc 安装make [root@lvs1 ~]# yum install make 安装ruby源(ruby版本必须要在1.9.3以上,centos自带的是1.8的版本,需要自己编译安…

    Linux干货 2016-08-20
  • 课堂练习及课后作业(0805文本处理工具)

    课堂练习: 1、找出ifconfig命令结果中本机的所有IPv4地址 2、查出分区空间使用率的最大百分比值 3、查出用户UID最大值的用户名、UID及shell类型 4、查出/tmp的权限,以数字方式显示 5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序 grep 1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式…

    Linux干货 2016-08-07