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

相关推荐

  • Python内建函数

    内建函数 标识id() 返回对象的唯一标识,CPython返回内存地址 哈希hash() 返回一个对象的hash值 类型type() 返回对象的类型 类型转换 int()、float()、bin()、hex()、oct()、bool()、list()、tuple()、dict()、set()、complex()、bytes()、bytearray() 输入i…

    2018-04-08
  • 系统与内核管理

    系统与内核管理 1.Linux组成 Linux: kernel+rootfs kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能 rootfs:程序和glibc 库:函数集合, function, 调用接口(头文件负责描述) 过程调用:procedure,无返回值 函数调用:function 程序:二进制执行文件 内核设计流派: 单内…

    Linux笔记 2018-05-21
  • 第二周练习题

    创建/tmp目录下的:a_c,a_d,b_c,b_d; ~]# mkdir -pv /tmp/{a_{c,d},b_{c,d}} 创建如下目录: ~]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,…

    Linux干货 2016-11-01
  • The second week’s homework

    一.linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 Linux 文件与目录管理 我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。 首先需要知道什么是绝对路径与相对路径。 绝对路径: 路径的写法,由根目录 / 写起,例如: /usr/shar…

    Linux干货 2016-12-12
  • 初入linux_基础(一)

    初入Linux知识点总结(一) 一、理论知识 1、时间点: 1946年 第一代计算机ENIAC诞生于美国宾州大学,特点:块头大、效率低 数学家冯诺•依曼提出计算机体系结构组成部分:计算器、运算器、存储器、输入设备、输出设备 1969年 UNIX在美国贝尔实验室诞生 1984年 GNU项目和软件基金会成立 1991年 Linux在芬兰赫尔辛基诞生 2、计算机的…

    Linux干货 2017-02-18
  • 初识正则表达式

    正则表达式是个什么东东? 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。在很多文本编辑器里、命令中,通常要使用检索、替换、放行和拒绝那些符合某个模式的文本。而正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。  摘自《正则表达式之…

    Linux干货 2015-03-27