天天看点

Linux之find查找

查找的区别

    grep 根据PATTERN逐行匹配目标文本,打印字串所在行至标准输出

    find  根据查找条件在给定的路径下,查找文件名对应的文件

查找的分类

    实时查找: find

        根据用户给出的路径,在路径下查找

    非实时查找:locate,whatis

        依据事先构建的索引,在数据库中查找

        手动更新数据库的命令: updatedb, makewhatis

查找的特性

    find:实时。速度慢。精确匹配

    locate: 非实时。速度快。模糊匹配

查找语法

1

2

3

4

5

<code>2、获取帮助</code>

<code># man find 或 find --help</code>

<code>3、命令格式</code>

<code>find</code> <code>[OPTIONS...] [给出路径] [查找条件] [处理动作]</code>

[给出路径]: 目录的路径,默认为当前工作目录。

[查找条件]: 指定查找的过滤条件:文件名、属主、属组、大小、权限、时间戳,默认为指定路径下的所有文件和目录

[处理动作]: 对查找的文件执行的操作,默认为标准输出

6

7

8

9

10

11

12

13

14

15

16

<code>1、全默认时,当前工作目录下的所有文件及目录</code>

<code># find </code>

<code>.</code>

<code>./.font-unix</code>

<code>./.X1-lock</code>

<code>....</code>

<code>2、查找指定路径下的所有文件及目录</code>

<code># find /etc</code>

<code>...</code>

<code>/etc/openldap/schema/samba</code><code>.schema</code>

<code>/etc/services</code>

<code>/etc/virc</code>

<code>/etc/netconfig</code>

<code>/etc/named</code><code>.conf</code>

<code>/etc/sudoers</code>

一、处理动作

    -ls 类似ls -l,对所有查找到的文件或目录执行 ls -l操作。

    -delete 删除查找到的文件

    -fls /PATH/TO/SOMEFILE查找到的文件的长格式信息保存至指定的文件中

    执行命令的格式注释

        {} 代表每个被操作的文件

        \; 固定语法

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

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

    注意:find 命令会将符合条件的内容,一次性传递给后面的命令,有些命令或许不支持过多的参数,

此时我们应该使用

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

<code>find</code> <code>[OPTIONS...] [给出路径] [查找条件] [处理动作] | </code><code>xargs</code> <code>COMMAND</code>

<code>xargs</code><code>命令总结:</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># type xargs</code>

<code>xargs</code> <code>is </code><code>/usr/bin/xargs</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># xargs --help</code>

<code>Usage: </code><code>xargs</code> <code>[OPTION]... COMMAND INITIAL-ARGS...</code>

<code>默认以空白字符构建单行,将多行转换为单行,或将单行转换为多行</code>

<code>-d, --delimiter=CHARACTER 定义定界符</code>

<code>-E END 定义结束符</code>

<code>-n, --max-args=MAX-ARGS  每行最大的参数</code>

<code>-I R 将输入的每个数据赋值给R,可供R调用。R可为任意数</code>

<code># cat a.txt</code>

<code>a b c</code>

<code>d e f</code>

<code>g h</code>

<code>i</code>

<code>j k</code>

<code>1、将多行构建为单行</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># cat a.txt | xargs</code>

<code>a b c d e f g h i j k</code>

<code>2、-n选项</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># cat a.txt | xargs -n4</code>

<code>a b c d</code>

<code>e f g h</code>

<code>i j k</code>

<code>3、-d选项</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># echo "howXareXyou?" | xargs -d'X'</code>

<code>how are you?</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># </code>

<code>4、-I R 选项</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># echo "a b c d" | xargs -I R echo R</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># echo "a b c d" | xargs -I {}  echo {}</code>

<code>为了避免系统的文件不被误操作,</code>

<code># cd /tmp</code>

-ls 类似ls -l,对所有查找到的文件或目录执行 ls -l操作。

<code>1、当前工作目录下的所有文件或目录显示到标准输出,处理为 类似以</code><code>ls</code><code>的长格式显示命令执行</code>

<code># find -ls</code>

<code>819201    4 drwxrwxrwt   8 root     root         4096 Jun 12 20:53 .</code>

<code>819205    4 drwxrwxrwt   2 root     root         4096 Feb 24 10:59 ./.font-unix</code>

<code>819232    4 -r--r--r--   1 root     root           11 Jul 31  2017 ./.X1-lock</code>

<code># ls -a -l -i  以这种格式输出</code>

<code>819201 drwxrwxrwt.  8 root root 4096 Jun 12 20:53 .</code>

<code>     </code><code>2 dr-xr-xr-x. 26 root root 4096 Jun 12 13:29 ..</code>

<code>819205 drwxrwxrwt.  2 root root 4096 Feb 24 10:59 .font-unix</code>

<code>819212 -rw-r--r--   1 root root  358 Jun 12 17:09 fstab</code>

<code>2、指定目录下,以此格式输出</code>

<code># find /etc -ls</code>

<code>540806    4 -rw-r--r--   1 root     root         1982 Dec 22 01:00 </code><code>/etc/virc</code>

<code>541461    4 -rw-r--r--   1 root     root          767 May 22 21:40 </code><code>/etc/netconfig</code>

<code>541630    4 -rw-r-----   1 root     named        1715 Jul 10  2017 </code><code>/etc/named</code><code>.conf</code>

<code>541588    4 -r--r-----   1 root     root         3907 Jun 23  2017 </code><code>/etc/sudoers</code>

-delete 删除查找到的文件

<code>1、确认当前目录有哪些文件</code>

<code># ls -a</code>

<code>.  ..  .font-unix  fstab  .ICE-unix  </code><code>test</code>  <code>.Test-unix  .X11-unix  .X1-lock  .XIM-unix</code>

<code>2、默认路径为当前目录,操作为-delete</code>

<code># find -delete</code>

<code># echo $?  #命令执行状态结果</code>

<code>0</code>

<code>3、显示当前目录的文件(./表示当前目录, ../表示上一级目录</code>

<code># find ./</code>

<code>./         </code><code>#已经删除</code>

-fls /PATH/TO/SOMEFILE查找到的文件的长格式信息保存至指定的文件中

<code>1、准备文件</code>

<code># install -m 640 /etc/{fstab,issue,ntp.conf,rc.d/init.d/functions,rc.d/rc.sysinit} /tmp</code>

<code>2、确保文件存在 </code>

<code>819201    4 drwxrwxrwt   2 root     root         4096 Jun 12 21:30 .</code>

<code>819205    4 -rw-r-----   1 root     root           23 Jun 12 21:30 .</code><code>/issue</code>

<code>819206    4 -rw-r-----   1 root     root         2439 Jun 12 21:30 .</code><code>/ntp</code><code>.conf</code>

<code>819212   24 -rw-r-----   1 root     root        20611 Jun 12 21:30 .</code><code>/rc</code><code>.sysinit</code>

<code>819204    4 -rw-r-----   1 root     root          358 Jun 12 21:30 .</code><code>/fstab</code>

<code>819207   16 -rw-r-----   1 root     root        15131 Jun 12 21:30 .</code><code>/functions</code>

<code>3、查找到的文件的长格式信息保存至指定的文件中</code>

<code># find /tmp -fls /tmp/fls.out</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># cat /tmp/fls.out  ##由以上查找结果和下对比</code>

<code>819201    4 drwxrwxrwt   2 root     root         4096 Jun 12 21:33 </code><code>/tmp</code>

<code>819205    4 -rw-r-----   1 root     root           23 Jun 12 21:30 </code><code>/tmp/issue</code>

<code>819206    4 -rw-r-----   1 root     root         2439 Jun 12 21:30 </code><code>/tmp/ntp</code><code>.conf</code>

<code>819212   24 -rw-r-----   1 root     root        20611 Jun 12 21:30 </code><code>/tmp/rc</code><code>.sysinit</code>

<code>819204    4 -rw-r-----   1 root     root          358 Jun 12 21:30 </code><code>/tmp/fstab</code>

<code>819217    0 -rw-r--r--   1 root     root            0 Jun 12 21:33 </code><code>/tmp/fls</code><code>.out</code>

<code>819207   16 -rw-r-----   1 root     root        15131 Jun 12 21:30 </code><code>/tmp/functions</code>

-ok COMMAND 查找到的每个文件将交互式的执行由COMMAND指定的命令

<code>1、查找的文件</code>

<code># find /tmp </code>

<code>/tmp</code>

<code>/tmp/issue</code>

<code>/tmp/ntp</code><code>.conf</code>

<code>/tmp/rc</code><code>.sysinit</code>

<code>/tmp/fstab</code>

<code>/tmp/fls</code><code>.out</code>

<code>/tmp/functions</code>

<code>2、交互式的执行命令</code>

<code># find /tmp -ok ls -l {} \;</code>

<code>&lt; </code><code>ls</code> <code>... </code><code>/tmp</code> <code>&gt; ? y</code>

<code>total 56</code>

<code>-rw-r--r-- 1 root root   554 Jun 12 21:33 fls.out</code>

<code>-rw-r----- 1 root root   358 Jun 12 21:30 fstab</code>

<code>-rw-r----- 1 root root 15131 Jun 12 21:30 functions</code>

<code>-rw-r----- 1 root root    23 Jun 12 21:30 issue</code>

<code>-rw-r----- 1 root root  2439 Jun 12 21:30 ntp.conf</code>

<code>-rw-r----- 1 root root 20611 Jun 12 21:30 rc.sysinit</code>

<code>&lt; </code><code>ls</code> <code>... </code><code>/tmp/issue</code> <code>&gt; ? y</code>

<code>-rw-r----- 1 root root 23 Jun 12 21:30 </code><code>/tmp/issue</code>

<code>&lt; </code><code>ls</code> <code>... </code><code>/tmp/ntp</code><code>.conf &gt; ? y</code>

<code>-rw-r----- 1 root root 2439 Jun 12 21:30 </code><code>/tmp/ntp</code><code>.conf</code>

<code>&lt; </code><code>ls</code> <code>... </code><code>/tmp/rc</code><code>.sysinit &gt; ? y</code>

<code>-rw-r----- 1 root root 20611 Jun 12 21:30 </code><code>/tmp/rc</code><code>.sysinit</code>

<code>&lt; </code><code>ls</code> <code>... </code><code>/tmp/fstab</code> <code>&gt; ? y</code>

<code>-rw-r----- 1 root root 358 Jun 12 21:30 </code><code>/tmp/fstab</code>

<code>&lt; </code><code>ls</code> <code>... </code><code>/tmp/fls</code><code>.out &gt; ? n</code>

<code>&lt; </code><code>ls</code> <code>... </code><code>/tmp/functions</code> <code>&gt; ? n</code>

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

<code>1、查找文件</code>

<code># find /tmp -ls</code>

<code>819201    4 drwxrwxrwt   2 root     myuser       4096 Jun 12 21:33 </code><code>/tmp</code>

<code>819217    4 -rw-r--r--   1 root     root          554 Jun 12 21:33 </code><code>/tmp/fls</code><code>.out</code>

<code>2、修改属主</code>

<code># useradd myuser</code>

<code># find /tmp -exec chown myuser {} \;</code>

<code>819201    4 drwxrwxrwt   2 myuser   myuser       4096 Jun 12 21:33 </code><code>/tmp</code>

<code>819205    4 -rw-r-----   1 myuser   root           23 Jun 12 21:30 </code><code>/tmp/issue</code>

<code>819206    4 -rw-r-----   1 myuser   root         2439 Jun 12 21:30 </code><code>/tmp/ntp</code><code>.conf</code>

<code>819212   24 -rw-r-----   1 myuser   root        20611 Jun 12 21:30 </code><code>/tmp/rc</code><code>.sysinit</code>

<code>819204    4 -rw-r-----   1 myuser   root          358 Jun 12 21:30 </code><code>/tmp/fstab</code>

<code>819217    4 -rw-r--r--   1 myuser   root          554 Jun 12 21:33 </code><code>/tmp/fls</code><code>.out</code>

<code>819207   16 -rw-r-----   1 myuser   root        15131 Jun 12 21:30 </code><code>/tmp/functions</code>

大量参数袭来,使用xargs命令

<code>1、显示</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># find /tmp | xargs ls -l</code>

<code>-rw-r--r--  1 myuser root     554 Jun 12 21:33 </code><code>/tmp/fls</code><code>.out</code>

<code>-rw-r-----  1 myuser root     358 Jun 12 21:30 </code><code>/tmp/fstab</code>

<code>-rw-r-----  1 myuser root   15131 Jun 12 21:30 </code><code>/tmp/functions</code>

<code>-rw-r-----  1 myuser root      23 Jun 12 21:30 </code><code>/tmp/issue</code>

<code>-rw-r-----  1 myuser root    2439 Jun 12 21:30 </code><code>/tmp/ntp</code><code>.conf</code>

<code>-rw-r-----  1 myuser root   20611 Jun 12 21:30 </code><code>/tmp/rc</code><code>.sysinit</code>

<code>/tmp</code><code>:</code>

<code>-rw-r--r-- 1 myuser root   554 Jun 12 21:33 fls.out</code>

<code>-rw-r----- 1 myuser root   358 Jun 12 21:30 fstab</code>

<code>-rw-r----- 1 myuser root 15131 Jun 12 21:30 functions</code>

<code>-rw-r----- 1 myuser root    23 Jun 12 21:30 issue</code>

<code>-rw-r----- 1 myuser root  2439 Jun 12 21:30 ntp.conf</code>

<code>-rw-r----- 1 myuser root 20611 Jun 12 21:30 rc.sysinit</code>

<code>2、改变属主</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># find /tmp | xargs -I {} chown root {}</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ls -l</code>

二、查找条件

按文件名查找    

-name "文件名称" 严格区分文件名大小写,文件名支持glob ? * [] [^] 字符集

-iname "文件名称" 查找时不区分大小写

-regex "PATTERN" 正则表达式 regular expression ,支持部分

    -iregex "PATTERN"  正则表达式 查找时不区分大小写

-name "文件名称" 严格区分文件名大小写,文件名支持glob通配符 ? * [] [^] 字符集

<code>[root@izpo45bh60h6bsz ~]</code><code># find /etc -name "passwd"</code>

<code>/etc/pam</code><code>.d</code><code>/passwd</code>

<code>/etc/passwd</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /etc -name "*passwd"</code>

<code>/etc/security/opasswd</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /etc -name "passwd*"</code>

<code>/etc/passwd-</code>

-iname "文件名称" 文件名称中给出的字符不区分大小写,LInux文件名严格区分大小写

<code>1、准备区分大小写的文件名称</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># touch /tmp/{file1,File1,FILE1}</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /tmp/{file1,File1,FILE1}</code>

<code>/tmp/file1</code>  <code>/tmp/File1</code>  <code>/tmp/FILE1</code>

<code>2、文件名称中给出的字符不区分大小写</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -iname "file*" #不区分</code>

<code>/tmp/File1</code>

<code>/tmp/file1</code>

<code>/tmp/FILE1</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -name "file*"</code>

-regex "PATTERN" 正则表达式 regular expression . [] [^] * \+ \? \{m,n\} () 

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -regex "[[:alnum:]]\+$" ##没有匹配到,或许对正则表达式支持不太好。</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># echo $?</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -regex ".*[Ff]..[eE]1"</code>

<code>  </code> 

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -iregex ".*file1"  ##忽略字字符大小写</code>

属主和属组查找

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

-group GROUP 查找属组为 指定组的文件

-uid UID 查找属主为指定的UID文件

-gid GROUPID 查找属组为指定的GROUPID文件

-nouser 查找 没有属主的文件。只有id号,属于用户的文件,在用户被删除后,文件只有ID号

-nogroup 查找 没有属组的文件

<code>1、将file1,File1,FILE1文件的属主改为myuser</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -iname "file1" -exec chown myuser {} \;</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -iname "file1" -ls</code>

<code>819226    0 -rw-r--r--   1 myuser   root            0 Jun 12 22:31 </code><code>/tmp/File1</code>

<code>819218    0 -rw-r--r--   1 myuser   root            0 Jun 12 22:31 </code><code>/tmp/file1</code>

<code>819227    0 -rw-r--r--   1 myuser   root            0 Jun 12 22:31 </code><code>/tmp/FILE1</code>

<code>2、查找属主为Myser的文件</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -user myuser</code>

<code>1、准备</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># useradd centos  ##添加centos用户</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># su - centos     ##切换至centos用户</code>

<code>[centos@izpo45bh60h6bsz ~]$ </code><code>cp</code> <code>/etc/fstab</code> <code>/tmp</code>  <code>##cp进程的属主为centos,创建的文件也属于centos</code>

<code>[centos@izpo45bh60h6bsz ~]$ </code><code>cp</code> <code>/var/log/wtmp</code> <code>/tmp</code>

<code>[centos@izpo45bh60h6bsz ~]$ </code><code>ls</code> <code>-l </code><code>/tmp/wtmp</code> <code>/tmp/fstab</code>

<code>-rw-r--r-- 1 centos centos   358 Jun 12 22:53 </code><code>/tmp/fstab</code>

<code>-rw-rw-r-- 1 centos centos 13056 Jun 12 22:54 </code><code>/tmp/wtmp</code>

<code>[centos@izpo45bh60h6bsz ~]$ </code><code>exit</code>

<code>logout</code>

<code>2、修改属主为root</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -group centos -exec chown root {} \;</code>

<code>3、查看</code><code>/tmp</code><code>之下的属组为centos的文件</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -group centos -ls</code>

<code>819228    4 -rw-r--r--   1 root     centos        358 Jun 12 22:53 </code><code>/tmp/fstab</code>

<code>819232   16 -rw-rw-r--   1 root     centos      13056 Jun 12 22:54 </code><code>/tmp/wtmp</code>

<code>819228    4 -rw-r--r--   1 centos   centos        358 Jun 12 22:53 </code><code>/tmp/fstab</code>

<code>819232   16 -rw-rw-r--   1 centos   centos      13056 Jun 12 22:54 </code><code>/tmp/wtmp</code>

<code>1、获取myuser的UID</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># id myuser</code>

<code>uid=10003(myuser) gid=10009(myuser) </code><code>groups</code><code>=10009(myuser)</code>

<code>2、按此</code><code>id</code><code>查找文件</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -uid 10003 -ls</code>

<code>1、获取centos用户的GID</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># id centos</code>

<code>uid=10004(centos) gid=10010(centos) </code><code>groups</code><code>=10010(centos)</code>

<code>2、按组</code><code>id</code><code>查找</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -gid 10010 -ls</code>

-nouser 查找 没有属主的文件。只有id号

<code>1、查看属主不是root的文件</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls -l /tmp</code>

<code>total 76</code>

<code>-rw-r--r-- 1 myuser root       0 Jun 12 22:31 file1</code>

<code>-rw-r--r-- 1 myuser root       0 Jun 12 22:31 File1</code>

<code>-rw-r--r-- 1 myuser root       0 Jun 12 22:31 FILE1</code>

<code>2、确认为myuser用户,删除用户生成没有属主的文件</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># userdel -r myuser</code>

<code>-rw-r--r-- 1 10003 root      0 Jun 12 22:31 file1</code>

<code>-rw-r--r-- 1 10003 root      0 Jun 12 22:31 File1</code>

<code>-rw-r--r-- 1 10003 root      0 Jun 12 22:31 FILE1</code>

<code>3、查找</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -nouser -ls</code>

<code>819226    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 </code><code>/tmp/File1</code>

<code>819218    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 </code><code>/tmp/file1</code>

<code>819227    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 </code><code>/tmp/FILE1</code>

<code>1、查看属组不是root的文件</code>

<code>-rw-r--r-- 1 root   centos   358 Jun 12 22:53 fstab</code>

<code>-rw-rw-r-- 1 root   centos 13056 Jun 12 22:54 wtmp</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># userdel -r centos</code>

<code>-rw-r--r-- 1 root   10010   358 Jun 12 22:53 fstab</code>

<code>-rw-rw-r-- 1 root   10010 13056 Jun 12 22:54 wtmp</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -nogroup -ls</code>

<code>819201    4 drwxrwxrwt   2 root     10009        4096 Jun 12 22:54 </code><code>/tmp</code>

<code>819228    4 -rw-r--r--   1 root     10010         358 Jun 12 22:53 </code><code>/tmp/fstab</code>

<code>819232   16 -rw-rw-r--   1 root     10010       13056 Jun 12 22:54 </code><code>/tmp/wtmp</code>

根据文件类型查找

-type TYPE

TYPE:

f 普通文件

d 目录 文件

b 块设备文件

c 字符设备文件

l 符号链接文件

p 管道文件

s 套接字文件

38

39

40

41

42

43

44

45

46

<code>1、查找</code><code>/etc/</code><code>目录下为目录的文件</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /etc -type d</code>

<code>/etc/python</code>

<code>/etc/statetab</code><code>.d</code>

<code>/etc/openldap</code>

<code>/etc/openldap/certs</code>

<code>/etc/openldap/schema</code>

<code>2、查找/下为套接字的文件</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find / -type s -ls</code>

<code>  </code><code>6767    0 srw-rw-rw-   1 root     root            0 Jul 31  2017 </code><code>/run/systemd/journal/stdout</code>

<code>  </code><code>6751    0 srwx------   1 root     root            0 Jul 31  2017 </code><code>/run/systemd/cgroups-agent</code>

<code>  </code><code>6749    0 srwxrwxrwx   1 root     root            0 Jul 31  2017 </code><code>/run/systemd/notify</code>

<code>3、查找</code><code>/tmp</code><code>为普通文件的文件</code>

<code>  </code><code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -type f -ls</code>

<code>819217    4 -rw-r--r--   1 root     root          554 Jun 12 21:33 </code><code>/tmp/fls</code><code>.out.new.new</code>

<code>819206    4 -rw-r-----   1 root     root         2439 Jun 12 21:30 </code><code>/tmp/ntp</code><code>.conf.new.new</code>

<code>4、查找</code><code>/etc</code><code>为符号链接的文件</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /etc -type l -ls</code>

<code>541372    0 lrwxrwxrwx   1 root     root           10 May 15 09:13 </code><code>/etc/httpd/run</code> <code>-&gt; </code><code>/run/httpd</code>

<code>540874    0 lrwxrwxrwx   1 root     root           56 Feb 24 10:59 </code><code>/etc/favicon</code><code>.png -&gt; </code><code>/usr/share/icons/hicolor/16x16/apps/fedora-logo-icon</code><code>.png</code>

<code>541531    0 lrwxrwxrwx   1 root     root           35 Jun 14 16:17 </code><code>/etc/cifs-utils/idmap-plugin</code> <code>-&gt; </code><code>/etc/alternatives/cifs-idmap-plugin</code>

<code>5、查找/为管道的文件</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find / -type p -ls</code>

<code>   </code><code>112    0 prw-------   1 root     root            0 Jul 31 14:51 </code><code>/var/lib/nfs/rpc_pipefs/gssd/clntXX/gssd</code>

<code>  </code><code>9614    0 prw-------   1 root     root            0 Jul 31 14:50 </code><code>/run/dmeventd-client</code>

<code>  </code><code>9613    0 prw-------   1 root     root            0 Jul 31 14:50 </code><code>/run/dmeventd-server</code>

<code> </code><code>66518    0 prw-------   1 root     root            0 Jul 31 15:14 </code><code>/run/systemd/ask-password-block/136</code><code>:0</code>

<code>6、查找</code><code>/dev</code><code>下为字符设备的文件</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /dev -type c -ls</code>

<code>4789    0 crw-rw-rw-   1 root     root       1,   5 Jul 31 14:51 </code><code>/dev/zero</code>

<code>4788    0 crw-r-----   1 root     kmem       1,   4 Jul 31 14:51 </code><code>/dev/port</code>

<code>4787    0 crw-rw-rw-   1 root     root       1,   3 Jul 31 14:51 </code><code>/dev/null</code>

<code>4786    0 crw-r-----   1 root     kmem       1,   1 Jul 31 14:51 </code><code>/dev/mem</code>

<code>23    0 crw-------   1 root     root      10,  63 Jul 31 14:51 </code><code>/dev/vga_arbiter</code>

<code>7、查找 </code><code>/dev</code><code>下为块设备的文件</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /dev -type b -ls</code>

<code>  </code><code>8067    0 brw-rw----   1 root     disk     253,   1 Jul 31 14:51 </code><code>/dev/vda1</code>

<code>  </code><code>8064    0 brw-rw----   1 root     disk     253,   0 Jul 31 14:50 </code><code>/dev/vda</code>

<code>  </code><code>8041    0 brw-rw----   1 root     cdrom     11,   0 Jul 31 14:51 </code><code>/dev/sr0</code>

组合条件

与 -a

或 -o

非 ! 或 -not

        摩根定律

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

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

47

48

49

50

51

52

53

<code>1、没有属主或没有属组的文件</code>

<code>1)</code><code>/tmp</code><code>下没有属主的文件</code>

<code>2)没有属组的文件</code>

<code>3)组合 </code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -nogroup -o -nouser  ##正解</code>

<code>/tmp/wtmp</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -nogroup -o -nouser -ls  ###有问题</code>

<code>    </code><code>#############组合条件中,-ls仅显示靠近ls的条件所匹配的内容#############</code>

<code>    </code> 

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp \( -nogroup -o -nouser \) -ls  ##正解</code>

<code>    </code><code>## \( \) 仅为了方便显示</code>

<code>2)tmp下owner不是root且文件名不是fstab</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp -not -user root -a -not -name "fstab"</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /tmp \( -not -user root -a -not -name "fstab" \) -ls</code>

<code>root@izpo45bh60h6bsz ~]</code><code># find /tmp -not \( -user root -o -name "fstab" \) -ls</code>

<code>###由摩根定律变化</code>

根据文件大小来查找

-size [+|-]#UNIT

UNIT: K M G

-size -#UNIT [0,#-1]

-size  #UNIT  (#-1,#]

-size +#UNIT (#,+oo]

<code>1、文件大小等于3k的文件 (2,3]</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /var -size 3k -exec ls -lh {} \;</code>

<code>-rw-r--r-- 1 root root 2.9K Jul 24  2017 </code><code>/var/lib/docker/volumes/1c198521fea9eb05afa8605bb9be3c5651a1be303d3b7d06f0a74302e5f2217a/_data/cphalcon/build/_resource/Phalcon/Build/Generator/Safe</code><code>.php</code>

<code>-rw-r--r-- 1 root root 2.2K Jul 24  2017 </code><code>/var/lib/docker/volumes/1c198521fea9eb05afa8605bb9be3c5651a1be303d3b7d06f0a74302e5f2217a/_data/cphalcon/build/php7/64bits/build/mkdep</code><code>.</code><code>awk</code>

<code>-rw-r--r-- 1 root root 2.2K Jul 24  2017 </code><code>/var/lib/docker/volumes/1c198521fea9eb05afa8605bb9be3c5651a1be303d3b7d06f0a74302e5f2217a/_data/cphalcon/build/php7/64bits/config</code><code>.h</code>

<code>-rw-rw---- 1 102 105 3.0K Jun  5 11:01 </code><code>/var/lib/docker/volumes/820559fb16372047d77b04198c7acb2558d28a2e5dba2a552fafe752c51e2657/_data/mysql/help_category</code><code>.MYI</code>

<code>-rw-rw---- 1 102 105 3.0K Jun 28  2017 </code><code>/var/lib/docker/volumes/d5a21db1e5e6cc3156c1b65df2c02c2f621a04624dfbfe0b43f985a001a7621b/_data/mysql/help_category</code><code>.MYI</code>

<code>-rw-rw---- 1 102 105 3.0K Jun 28  2017 </code><code>/var/lib/docker/volumes/78877a432184402ad398d087e11c60327518a8aa33837d2d33d5a65965b25e2a/_data/mysql/help_category</code><code>.MYI</code>

<code>-rw-rw-rw- 1 root root 2.3K Jul 24  2017 </code><code>/var/lib/docker/containers/1d72cfe7c1a3334018d24c835abba40a3304ea80c10b5f77870f9fea3d16235d/config</code><code>.v2.json</code>

<code>-rw-r--r-- 1 root root 2.2K Jun 14  2017 </code><code>/var/lib/pcsd/pcs_users</code><code>.conf</code>

<code>......</code>

<code>2、文件大小 小于3k的文件 [0,2]</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># find /var -size -3k -exec ls -lh {} \;</code>

<code>30873eee5c6a71770e65619fac9686fd3e434c63</code><code>/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/etc/inittab</code>

<code>-rw-r--r-- 1 root root 295 Dec 14  2015 </code><code>/var/lib/docker/volumes/4e61477adc56ecfceb1f629130873eee5c6a71770e65619fac9686fd3e434c63/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/etc/profile</code><code>.d</code><code>/color_prompt</code>

<code>-rw-r--r-- 1 root root 42 Dec 14  2015 </code><code>/var/lib/docker/volumes/4e61477adc56ecfceb1f629130873eee5c6a71770e65619fac9686fd3e434c63/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/etc/hosts</code>

<code>-rw-r--r-- 1 root root 10 Dec 14  2015 </code><code>/var/lib/docker/volumes/4e61477adc56ecfceb1f629130873eee5c6a71770e65619fac9686fd3e434c63/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/etc/hostname</code>

<code>-rw-r--r-- 1 root root 65 Dec 16  2015 </code><code>/var/lib/docker/volumes/4e61477adc56ecfceb1f629130873eee5c6a71770e65619fac9686fd3e434c63/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/etc/securetty</code>

<code>-rw-r--r-- 1 root root 1.2K Jan 14  2016 </code><code>/var/lib/docker/volumes/4e61477adc56ecfceb1f629130873eee5c6a71770e65619fac9686fd3e434c63/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/usr/share/ca-certificates/mozilla/Sonera_Class_2_Root_CA</code><code>.crt</code>

<code>-rw-r--r-- 1 root root 1.3K Jan 14  2016 </code><code>/var/lib/docker/volumes/4e61477adc56ecfceb1f629130873eee5c6a71770e65619fac9686fd3e434c63/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/usr/share/ca-certificates/mozilla/Deutsche_Tele</code>

<code>3、文件大小 大于3k的文件 (3,+oo)</code>

<code>drwxr-xr-x  2 root root 4.0K Jun  6 11:22 02ae32a463293daba05d702b0c157beac3b62da3-samba-common-libs-4.4.4-14.el7_3-x86_64</code>

<code>drwxr-xr-x  2 root root 4.0K Jul 31  2017 07c18fc8a3449cf6abc357860ebcca7121ef410c-selinux-policy-3.13.1-102.el7_3.16-noarch</code>

<code>drwxr-xr-x  2 root root 4.0K May 18 17:56 0c9550ff7f47e27a0bce727be65f5ecbccaffa37-</code><code>screen</code><code>-4.1.0-0.23.20120314git3c2946.el7_2-x86_64</code>

<code>drwxr-xr-x  2 root root 4.0K Feb 24 03:08 13fd3e30a775cdc312d449d9880a34d470a04f88-systemtap-runtime-3.0-7.el7-x86_64</code>

<code>drwxr-xr-x  2 root root 4.0K Jul 31</code>

Linux之find查找

<a href="https://s4.51cto.com/wyfs02/M01/9D/B8/wKiom1mEXmOAOTV_AAAjVs0QVP8905.png" target="_blank"></a>

    天

-atime [+|-]# 访问时间

-atime -3 [0,3)      距离现在小于3天

-atime  3 [3,4)       距离现在有3天

-atime +3 [4,+oo] 距离现在大于3天

-mtime [+|-]# 修改时间

-mtime -3 [0,3)      距离现在小于3天

-mtime  3 [3,4)       距离现在有3天

-mtime +3 [4,+oo] 距离现在大于3天

-ctime [+|-]# 改变时间

-ctime -3 [0,3)      距离现在小于3天

-ctime  3 [3,4)       距离现在有3天

-ctime +3 [4,+oo] 距离现在大于3天

分钟

-amin [+|-]#

-mmin [+|-]#

-cmin [+|-]#

<code>1、准备3个文件</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># touch a b c</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ll</code>

<code>total 0</code>

<code>-rw-r--r-- 1 root root 0 Aug  4 19:49 a</code>

<code>-rw-r--r-- 1 root root 0 Aug  4 19:49 b</code>

<code>-rw-r--r-- 1 root root 0 Aug  4 19:49 c</code>

<code>2、修改a为距离现在有3天 8</code><code>/1</code> <code>19:00刚好3天,不满4天即可</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># touch -a -t 201708011700.00 a</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># stat a</code>

<code>Access: 2017-08-01 17:00:00.000000000 +0800</code>

<code>Modify: 2017-08-04 19:49:55.910297650 +0800</code>

<code>Change: 2017-08-04 19:51:57.971293624 +0800</code>

<code>3、修改b为距离现在小于3天, 8</code><code>/1</code> <code>19:00 至今天</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># touch -a -t 201708012000.00 c</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># stat c</code>

<code>Access: 2017-08-01 20:00:00.000000000 +0800</code>

<code>Change: 2017-08-04 19:52:40.346292227 +0800</code>

<code>4、修改c为距离现在大于3天 7</code><code>/31</code> <code>19:00整,到过去</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># touch -a -t 201707311930.00 b</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># stat b</code>

<code>Access: 2017-07-31 19:30:00.000000000 +0800</code>

<code>Change: 2017-08-04 19:57:06.459283447 +0800</code>

<code>搜索</code><code>/tmp</code><code>下访问距离现在有3天</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># find /tmp -atime 3</code>

<code>/tmp/a</code>

<code>搜索</code><code>/tmp</code><code>下访问距离现在小于3天</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># find /tmp -atime -3</code>

<code>/tmp/c</code>

<code>搜索</code><code>/tmp</code><code>下访问距离现在大于3天</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># find /tmp -atime +3</code>

<code>/tmp/b</code>

根据权限查找

-perm [/|-]MODE

    # find /etc -perm /MODE  某类用户的某位权限匹配,即可  或关系

    # fine /etc -perm -MODE 权限至少为MODE权限     且关系

    # find /etc -perm  MODE 权限必须为由MODE指定的权限

1、权限必须为由MODE指定的权限

<code>[root@izpo45bh60h6bsz tmp]</code><code># find /etc -perm 000 -ls</code>

<code>541665    4 ----------   1 root     root         1399 Jun 12 23:04 </code><code>/etc/gshadow</code>

<code>540719    4 ----------   1 root     root         2895 Jun 12 23:04 </code><code>/etc/shadow-</code>

<code>541797    4 ----------   1 root     root         2866 Jun 12 23:04 </code><code>/etc/shadow</code>

<code>540711    4 ----------   1 root     root         1410 Jun 12 23:04 </code><code>/etc/gshadow-</code>

2、权限至少为MODE权限

<code>[root@izpo45bh60h6bsz tmp]</code><code># find /etc -perm -400 -ls </code>

<code>540724  660 -rw-r--r--   1 root     root       670293 Jun  7  2013 </code><code>/etc/services</code>

<code>540806    4 -rw-r--r--   1 root     root         1982 Dec 22  2016 </code><code>/etc/virc</code>

<code>541630    4 -rw-r-----   1 root     named        1715 Jul 10 13:58 </code><code>/etc/named</code><code>.conf</code>

<code>541588    4 -r--r-----   1 root     root         3907 Jun 23 03:42 </code><code>/etc/sudoers</code>

<code>#也就是属主的权限,至少有r权限.属组和其他用户的权限至少为0</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># find /etc -perm -422 -ls</code>

<code># 属主至少4,属组至少2,其他至少2</code>

3、某类用户的某位权限匹配,即可

<code>[root@izpo45bh60h6bsz tmp]</code><code># find /etc -perm /422 -ls</code>

<code>541488   24 -rw-r--r--   1 root     root        22900 May 25 19:33 </code><code>/etc/openldap/schema/samba</code><code>.schema</code>

<code>540724  660 -rw-r--r--   属主r或w匹配</code>

<code>540806    4 -rw-r--r--   属主r或w匹配</code>

<code>541461    4 -rw-r--r--   属主r或w匹配</code>

<code>541630    4 -rw-r-----   属主r或w匹配</code>

<code>541588    4 -r--r-----   属主r匹配</code>

本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1953698,如需转载请自行联系原作者