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

相关推荐

  • Linux-Basic—shell如何解释命令的运行

    附件下载: Linux Basics-shell.pdf

    Linux干货 2016-11-21
  • 设计模式(八)装饰器模式Decorator(结构型)

    1. 概述        若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。       通过继…

    Linux干货 2015-07-03
  • bash脚本变量的使用

    bash脚本的变量使用详解 变量的类型包括整数、字符串和数组,但在bash脚本编程中不需要指定类型就可以直接赋值,默认均为字符型,其参与运算会自动进行隐式类型转换。 变量的赋值方式为:name='value',其中“=”两边一定不能有空格,如果变量值中包含有空格则需要使用引号引起来,需要注意的是强引用和弱引用的区分。此外变量的赋值也可以引…

    Linux干货 2016-08-15
  • fstab配置文件详解

    /etc/fstab配置文件详解 /etc/fstab:记录了计算机上硬盘分区的相关信息,启动Linux时,检查分区的fsck命令,挂载分区的mount命令,都需要fstab这个文件的信息,来正确的检查和挂载硬盘,而且这个硬盘需要root用户权限才能编辑 详解: 设备名称   挂载点  分区的类型  挂载选项  dump选项  fsck选项 设备名称: 可以…

    Linux干货 2017-04-23
  • 网络N23期第二周:linux上的目录与文件管理命令,bash的工作特性等

    1、Linux上的目录与文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 1.1 mkdir  创建目录 使用方法:mkdir [OPTION]… DIRECTORY… 常用选项: -p:按需创建父目录 -m:创建目录权限 -v:输出详细创建目录过程 实例: 创建/tmp/test2/test3目录,定义权限为rwxrw-rw-,并详细显…

    Linux干货 2016-10-09
  • 软链接与硬链接的分析

    Linux引用硬链接与软链接,是为了实现文件的共享,更有隐藏文件路径、增加权限安全及节省存储等的好处。很多新手不知道软链接与硬链接的区别,今天大家一起总结它们的区别吧^_^ 一,硬链接 硬链接的特性可以体现出什么是硬链接: 通过索引节点来进行链接,文件要有相同的inode及data block 不允许跨分区创建 只有在同一文件系统中的文件之间才可以,不能交叉…

    2017-07-22