查找的区别

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

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

查找的分类

实时查找: find

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

非实时查找:locate,whatis

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

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

查找的特性

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

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

查找语法

2、获取帮助
# man find 或 find --help3、命令格式
find [OPTIONS...] [给出路径] [查找条件] [处理动作]

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

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

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

1、全默认时,当前工作目录下的所有文件及目录
# find
.
./.font-unix
./.X1-lock
....2、查找指定路径下的所有文件及目录
# find /etc
...
/etc/openldap/schema/samba.schema
/etc/services
/etc/virc
/etc/netconfig
/etc/named.conf
/etc/sudoers

一、处理动作

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

-delete 删除查找到的文件

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

执行命令的格式注释

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

\; 固定语法

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

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

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

此时我们应该使用

find [OPTIONS...] [给出路径] [查找条件] [处理动作] | xargs COMMANDxargs命令总结:
[root@izpo45bh60h6bsz tmp]# type xargs
xargs is /usr/bin/xargs
[root@izpo45bh60h6bsz tmp]# xargs --help
Usage: xargs [OPTION]... COMMAND INITIAL-ARGS...
默认以空白字符构建单行,将多行转换为单行,或将单行转换为多行
-d, --delimiter=CHARACTER 定义定界符
-E END 定义结束符
-n, --max-args=MAX-ARGS  每行最大的参数
-I R 将输入的每个数据赋值给R,可供R调用。R可为任意数# cat a.txt
a b c
d e f
g h
i
j k
1、将多行构建为单行
[root@izpo45bh60h6bsz ~]# cat a.txt | xargs
a b c d e f g h i j k
2、-n选项
[root@izpo45bh60h6bsz ~]# cat a.txt | xargs -n4
a b c d
e f g h
i j k
3、-d选项
[root@izpo45bh60h6bsz ~]# echo "howXareXyou?" | xargs -d'X'
how are you?[root@izpo45bh60h6bsz ~]#
4、-I R 选项
[root@izpo45bh60h6bsz tmp]# echo "a b c d" | xargs -I R echo R
a b c d
[root@izpo45bh60h6bsz tmp]# echo "a b c d" | xargs -I {}  echo {}
a b c d
为了避免系统的文件不被误操作,
# cd /tmp

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

1、当前工作目录下的所有文件或目录显示到标准输出,处理为 类似以ls的长格式显示命令执行
# find -ls
819201    4 drwxrwxrwt   8 root     root         4096 Jun 12 20:53 .
819205    4 drwxrwxrwt   2 root     root         4096 Feb 24 10:59 ./.font-unix
819232    4 -r--r--r--   1 root     root           11 Jul 31  2017 ./.X1-lock
....# ls -a -l -i  以这种格式输出
819201 drwxrwxrwt.  8 root root 4096 Jun 12 20:53 .2 dr-xr-xr-x. 26 root root 4096 Jun 12 13:29 ..
819205 drwxrwxrwt.  2 root root 4096 Feb 24 10:59 .font-unix
819212 -rw-r--r--   1 root root  358 Jun 12 17:09 fstab
...2、指定目录下,以此格式输出
# find /etc -ls
....
540806    4 -rw-r--r--   1 root     root         1982 Dec 22 01:00 /etc/virc
541461    4 -rw-r--r--   1 root     root          767 May 22 21:40 /etc/netconfig
541630    4 -rw-r-----   1 root     named        1715 Jul 10  2017 /etc/named.conf
541588    4 -r--r-----   1 root     root         3907 Jun 23  2017 /etc/sudoers

-delete 删除查找到的文件

1、确认当前目录有哪些文件
# ls -a
.  ..  .font-unix  fstab  .ICE-unix  test  .Test-unix  .X11-unix  .X1-lock  .XIM-unix
2、默认路径为当前目录,操作为-delete
# find -delete
# echo $?  #命令执行状态结果
0
3、显示当前目录的文件(./表示当前目录, ../表示上一级目录
# find ./
./         #已经删除

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

1、准备文件
# install -m 640 /etc/{fstab,issue,ntp.conf,rc.d/init.d/functions,rc.d/rc.sysinit} /tmp
2、确保文件存在
# find -ls
819201    4 drwxrwxrwt   2 root     root         4096 Jun 12 21:30 .
819205    4 -rw-r-----   1 root     root           23 Jun 12 21:30 ./issue
819206    4 -rw-r-----   1 root     root         2439 Jun 12 21:30 ./ntp.conf
819212   24 -rw-r-----   1 root     root        20611 Jun 12 21:30 ./rc.sysinit
819204    4 -rw-r-----   1 root     root          358 Jun 12 21:30 ./fstab
819207   16 -rw-r-----   1 root     root        15131 Jun 12 21:30 ./functions
3、查找到的文件的长格式信息保存至指定的文件中
# find /tmp -fls /tmp/fls.out
[root@izpo45bh60h6bsz tmp]# cat /tmp/fls.out  ##由以上查找结果和下对比
819201    4 drwxrwxrwt   2 root     root         4096 Jun 12 21:33 /tmp
819205    4 -rw-r-----   1 root     root           23 Jun 12 21:30 /tmp/issue
819206    4 -rw-r-----   1 root     root         2439 Jun 12 21:30 /tmp/ntp.conf
819212   24 -rw-r-----   1 root     root        20611 Jun 12 21:30 /tmp/rc.sysinit
819204    4 -rw-r-----   1 root     root          358 Jun 12 21:30 /tmp/fstab
819217    0 -rw-r--r--   1 root     root            0 Jun 12 21:33 /tmp/fls.out
819207   16 -rw-r-----   1 root     root        15131 Jun 12 21:30 /tmp/functions

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

1、查找的文件
# find /tmp
/tmp
/tmp/issue
/tmp/ntp.conf
/tmp/rc.sysinit
/tmp/fstab
/tmp/fls.out
/tmp/functions
2、交互式的执行命令
# find /tmp -ok ls -l {} \;
< ls ... /tmp > ? y
total 56
-rw-r--r-- 1 root root   554 Jun 12 21:33 fls.out
-rw-r----- 1 root root   358 Jun 12 21:30 fstab
-rw-r----- 1 root root 15131 Jun 12 21:30 functions
-rw-r----- 1 root root    23 Jun 12 21:30 issue
-rw-r----- 1 root root  2439 Jun 12 21:30 ntp.conf
-rw-r----- 1 root root 20611 Jun 12 21:30 rc.sysinit
< ls ... /tmp/issue > ? y
-rw-r----- 1 root root 23 Jun 12 21:30 /tmp/issue
< ls ... /tmp/ntp.conf > ? y
-rw-r----- 1 root root 2439 Jun 12 21:30 /tmp/ntp.conf
< ls ... /tmp/rc.sysinit > ? y
-rw-r----- 1 root root 20611 Jun 12 21:30 /tmp/rc.sysinit
< ls ... /tmp/fstab > ? y
-rw-r----- 1 root root 358 Jun 12 21:30 /tmp/fstab
< ls ... /tmp/fls.out > ? n
< ls ... /tmp/functions > ? n

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

1、查找文件
# find /tmp -ls
819201    4 drwxrwxrwt   2 root     myuser       4096 Jun 12 21:33 /tmp
819205    4 -rw-r-----   1 root     root           23 Jun 12 21:30 /tmp/issue
819206    4 -rw-r-----   1 root     root         2439 Jun 12 21:30 /tmp/ntp.conf
819212   24 -rw-r-----   1 root     root        20611 Jun 12 21:30 /tmp/rc.sysinit
819204    4 -rw-r-----   1 root     root          358 Jun 12 21:30 /tmp/fstab
819217    4 -rw-r--r--   1 root     root          554 Jun 12 21:33 /tmp/fls.out
819207   16 -rw-r-----   1 root     root        15131 Jun 12 21:30 /tmp/functions
2、修改属主
# useradd myuser
# find /tmp -exec chown myuser {} \;
# find /tmp -ls
819201    4 drwxrwxrwt   2 myuser   myuser       4096 Jun 12 21:33 /tmp
819205    4 -rw-r-----   1 myuser   root           23 Jun 12 21:30 /tmp/issue
819206    4 -rw-r-----   1 myuser   root         2439 Jun 12 21:30 /tmp/ntp.conf
819212   24 -rw-r-----   1 myuser   root        20611 Jun 12 21:30 /tmp/rc.sysinit
819204    4 -rw-r-----   1 myuser   root          358 Jun 12 21:30 /tmp/fstab
819217    4 -rw-r--r--   1 myuser   root          554 Jun 12 21:33 /tmp/fls.out
819207   16 -rw-r-----   1 myuser   root        15131 Jun 12 21:30 /tmp/functions

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

1、显示
[root@izpo45bh60h6bsz tmp]# find /tmp | xargs ls -l
-rw-r--r--  1 myuser root     554 Jun 12 21:33 /tmp/fls.out
-rw-r-----  1 myuser root     358 Jun 12 21:30 /tmp/fstab
-rw-r-----  1 myuser root   15131 Jun 12 21:30 /tmp/functions
-rw-r-----  1 myuser root      23 Jun 12 21:30 /tmp/issue
-rw-r-----  1 myuser root    2439 Jun 12 21:30 /tmp/ntp.conf
-rw-r-----  1 myuser root   20611 Jun 12 21:30 /tmp/rc.sysinit/tmp:
total 56
-rw-r--r-- 1 myuser root   554 Jun 12 21:33 fls.out
-rw-r----- 1 myuser root   358 Jun 12 21:30 fstab
-rw-r----- 1 myuser root 15131 Jun 12 21:30 functions
-rw-r----- 1 myuser root    23 Jun 12 21:30 issue
-rw-r----- 1 myuser root  2439 Jun 12 21:30 ntp.conf
-rw-r----- 1 myuser root 20611 Jun 12 21:30 rc.sysinit
2、改变属主
[root@izpo45bh60h6bsz tmp]# find /tmp | xargs -I {} chown root {}
[root@izpo45bh60h6bsz tmp]# ls -l
total 56
-rw-r--r-- 1 root root   554 Jun 12 21:33 fls.out
-rw-r----- 1 root root   358 Jun 12 21:30 fstab
-rw-r----- 1 root root 15131 Jun 12 21:30 functions
-rw-r----- 1 root root    23 Jun 12 21:30 issue
-rw-r----- 1 root root  2439 Jun 12 21:30 ntp.conf
-rw-r----- 1 root root 20611 Jun 12 21:30 rc.sysinit

二、查找条件

按文件名查找 

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

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

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

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

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

[root@izpo45bh60h6bsz ~]# find /etc -name "passwd"
/etc/pam.d/passwd
/etc/passwd
[root@izpo45bh60h6bsz ~]# find /etc -name "*passwd"
/etc/pam.d/passwd
/etc/passwd
/etc/security/opasswd
[root@izpo45bh60h6bsz ~]# find /etc -name "passwd*"
/etc/passwd-
/etc/pam.d/passwd
/etc/passwd

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

1、准备区分大小写的文件名称
[root@izpo45bh60h6bsz ~]# touch /tmp/{file1,File1,FILE1}
[root@izpo45bh60h6bsz ~]# ls /tmp/{file1,File1,FILE1}
/tmp/file1  /tmp/File1  /tmp/FILE1
2、文件名称中给出的字符不区分大小写
[root@izpo45bh60h6bsz ~]# find /tmp -iname "file*" #不区分
/tmp/File1
/tmp/file1
/tmp/FILE1
[root@izpo45bh60h6bsz ~]# find /tmp -name "file*"
/tmp/file1

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

[root@izpo45bh60h6bsz ~]# find /tmp -regex "[[:alnum:]]\+$" ##没有匹配到,或许对正则表达式支持不太好。
[root@izpo45bh60h6bsz ~]# echo $?
0
[root@izpo45bh60h6bsz ~]#
[root@izpo45bh60h6bsz ~]# find /tmp -regex ".*[Ff]..[eE]1"
/tmp/File1
/tmp/file1
/tmp/FILE1[root@izpo45bh60h6bsz ~]# find /tmp -iregex ".*file1"  ##忽略字字符大小写
/tmp/File1
/tmp/file1
/tmp/FILE1

属主和属组查找

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

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

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

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

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

-nogroup 查找 没有属组的文件

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

1、将file1,File1,FILE1文件的属主改为myuser
[root@izpo45bh60h6bsz ~]# find /tmp -iname "file1" -exec chown myuser {} \;
[root@izpo45bh60h6bsz ~]# find /tmp -iname "file1" -ls
819226    0 -rw-r--r--   1 myuser   root            0 Jun 12 22:31 /tmp/File1
819218    0 -rw-r--r--   1 myuser   root            0 Jun 12 22:31 /tmp/file1
819227    0 -rw-r--r--   1 myuser   root            0 Jun 12 22:31 /tmp/FILE12、查找属主为Myser的文件
[root@izpo45bh60h6bsz ~]# find /tmp -user myuser
/tmp/File1
/tmp/file1
/tmp/FILE1

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

1、准备
[root@izpo45bh60h6bsz ~]# useradd centos  ##添加centos用户
[root@izpo45bh60h6bsz ~]# su - centos     ##切换至centos用户
[centos@izpo45bh60h6bsz ~]$ cp /etc/fstab /tmp  ##cp进程的属主为centos,创建的文件也属于centos
[centos@izpo45bh60h6bsz ~]$ cp /var/log/wtmp /tmp
[centos@izpo45bh60h6bsz ~]$ ls -l /tmp/wtmp /tmp/fstab
-rw-r--r-- 1 centos centos   358 Jun 12 22:53 /tmp/fstab
-rw-rw-r-- 1 centos centos 13056 Jun 12 22:54 /tmp/wtmp
[centos@izpo45bh60h6bsz ~]$ exit
logout
[root@izpo45bh60h6bsz ~]# 2、修改属主为root
[root@izpo45bh60h6bsz ~]# find /tmp -group centos -exec chown root {} \;3、查看/tmp之下的属组为centos的文件
[root@izpo45bh60h6bsz ~]# find /tmp -group centos -ls
819228    4 -rw-r--r--   1 root     centos        358 Jun 12 22:53 /tmp/fstab
819232   16 -rw-rw-r--   1 root     centos      13056 Jun 12 22:54 /tmp/wtmp
[root@izpo45bh60h6bsz ~]# find /tmp -group centos -ls
819228    4 -rw-r--r--   1 centos   centos        358 Jun 12 22:53 /tmp/fstab
819232   16 -rw-rw-r--   1 centos   centos      13056 Jun 12 22:54 /tmp/wtmp

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

1、获取myuser的UID
[root@izpo45bh60h6bsz ~]# id myuser
uid=10003(myuser) gid=10009(myuser) groups=10009(myuser)2、按此id查找文件
[root@izpo45bh60h6bsz ~]# find /tmp -uid 10003 -ls
819226    0 -rw-r--r--   1 myuser   root            0 Jun 12 22:31 /tmp/File1
819218    0 -rw-r--r--   1 myuser   root            0 Jun 12 22:31 /tmp/file1
819227    0 -rw-r--r--   1 myuser   root            0 Jun 12 22:31 /tmp/FILE1

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

1、获取centos用户的GID
[root@izpo45bh60h6bsz ~]# id centos
uid=10004(centos) gid=10010(centos) groups=10010(centos)2、按组id查找
[root@izpo45bh60h6bsz ~]# find /tmp -gid 10010 -ls
819228    4 -rw-r--r--   1 root     centos        358 Jun 12 22:53 /tmp/fstab
819232   16 -rw-rw-r--   1 root     centos      13056 Jun 12 22:54 /tmp/wtmp

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

1、查看属主不是root的文件
[root@izpo45bh60h6bsz ~]# ls -l /tmp
total 76
-rw-r--r-- 1 myuser root       0 Jun 12 22:31 file1
-rw-r--r-- 1 myuser root       0 Jun 12 22:31 File1
-rw-r--r-- 1 myuser root       0 Jun 12 22:31 FILE12、确认为myuser用户,删除用户生成没有属主的文件
[root@izpo45bh60h6bsz ~]# userdel -r myuser
[root@izpo45bh60h6bsz ~]# ls -l /tmp
total 76
-rw-r--r-- 1 10003 root      0 Jun 12 22:31 file1
-rw-r--r-- 1 10003 root      0 Jun 12 22:31 File1
-rw-r--r-- 1 10003 root      0 Jun 12 22:31 FILE13、查找
[root@izpo45bh60h6bsz ~]# find /tmp -nouser -ls
819226    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/File1
819218    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/file1
819227    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/FILE1

-nogroup 查找 没有属组的文件

1、查看属组不是root的文件
[root@izpo45bh60h6bsz ~]# ls -l /tmp
-rw-r--r-- 1 root   centos   358 Jun 12 22:53 fstab
-rw-rw-r-- 1 root   centos 13056 Jun 12 22:54 wtmp2、确认为myuser用户,删除用户生成没有属主的文件
[root@izpo45bh60h6bsz ~]# userdel -r centos
[root@izpo45bh60h6bsz ~]# ls -l /tmp
-rw-r--r-- 1 root   10010   358 Jun 12 22:53 fstab
-rw-rw-r-- 1 root   10010 13056 Jun 12 22:54 wtmp3、查找
[root@izpo45bh60h6bsz ~]# find /tmp -nogroup -ls
819201    4 drwxrwxrwt   2 root     10009        4096 Jun 12 22:54 /tmp
819228    4 -rw-r--r--   1 root     10010         358 Jun 12 22:53 /tmp/fstab
819232   16 -rw-rw-r--   1 root     10010       13056 Jun 12 22:54 /tmp/wtmp

根据文件类型查找

-type TYPE

TYPE:

f 普通文件

d 目录 文件

b 块设备文件

c 字符设备文件

l 符号链接文件

p 管道文件

s 套接字文件

1、查找/etc/目录下为目录的文件
[root@izpo45bh60h6bsz ~]# find /etc -type d
...
/etc/python
/etc/statetab.d
/etc/openldap
/etc/openldap/certs
/etc/openldap/schema2、查找/下为套接字的文件
[root@izpo45bh60h6bsz ~]# find / -type s -ls
...6767    0 srw-rw-rw-   1 root     root            0 Jul 31  2017 /run/systemd/journal/stdout6751    0 srwx------   1 root     root            0 Jul 31  2017 /run/systemd/cgroups-agent6749    0 srwxrwxrwx   1 root     root            0 Jul 31  2017 /run/systemd/notify3、查找/tmp为普通文件的文件[root@izpo45bh60h6bsz ~]# find /tmp -type f -ls
819217    4 -rw-r--r--   1 root     root          554 Jun 12 21:33 /tmp/fls.out.new.new
819206    4 -rw-r-----   1 root     root         2439 Jun 12 21:30 /tmp/ntp.conf.new.new
819226    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/File14、查找/etc为符号链接的文件
[root@izpo45bh60h6bsz ~]# find /etc -type l -ls
541372    0 lrwxrwxrwx   1 root     root           10 May 15 09:13 /etc/httpd/run -> /run/httpd
540874    0 lrwxrwxrwx   1 root     root           56 Feb 24 10:59 /etc/favicon.png -> /usr/share/icons/hicolor/16x16/apps/fedora-logo-icon.png
541531    0 lrwxrwxrwx   1 root     root           35 Jun 14 16:17 /etc/cifs-utils/idmap-plugin -> /etc/alternatives/cifs-idmap-plugin
5、查找/为管道的文件
[root@izpo45bh60h6bsz ~]# find / -type p -ls112    0 prw-------   1 root     root            0 Jul 31 14:51 /var/lib/nfs/rpc_pipefs/gssd/clntXX/gssd9614    0 prw-------   1 root     root            0 Jul 31 14:50 /run/dmeventd-client9613    0 prw-------   1 root     root            0 Jul 31 14:50 /run/dmeventd-server66518    0 prw-------   1 root     root            0 Jul 31 15:14 /run/systemd/ask-password-block/136:0
6、查找/dev下为字符设备的文件
[root@izpo45bh60h6bsz ~]# find /dev -type c -ls
4789    0 crw-rw-rw-   1 root     root       1,   5 Jul 31 14:51 /dev/zero
4788    0 crw-r-----   1 root     kmem       1,   4 Jul 31 14:51 /dev/port
4787    0 crw-rw-rw-   1 root     root       1,   3 Jul 31 14:51 /dev/null
4786    0 crw-r-----   1 root     kmem       1,   1 Jul 31 14:51 /dev/mem
23    0 crw-------   1 root     root      10,  63 Jul 31 14:51 /dev/vga_arbiter
7、查找 /dev下为块设备的文件
[root@izpo45bh60h6bsz ~]# find /dev -type b -ls8067    0 brw-rw----   1 root     disk     253,   1 Jul 31 14:51 /dev/vda18064    0 brw-rw----   1 root     disk     253,   0 Jul 31 14:50 /dev/vda8041    0 brw-rw----   1 root     cdrom     11,   0 Jul 31 14:51 /dev/sr0

组合条件

与 -a

或 -o

非 ! 或 -not

摩根定律

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

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

1、没有属主或没有属组的文件1)/tmp下没有属主的文件
[root@izpo45bh60h6bsz ~]# find /tmp -nouser -ls
819226    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/File1
819218    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/file1
819227    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/FILE12)没有属组的文件
[root@izpo45bh60h6bsz ~]# find /tmp -nogroup -ls
819201    4 drwxrwxrwt   2 root     10009        4096 Jun 12 22:54 /tmp
819228    4 -rw-r--r--   1 root     10010         358 Jun 12 22:53 /tmp/fstab
819232   16 -rw-rw-r--   1 root     10010       13056 Jun 12 22:54 /tmp/wtmp
3)组合
[root@izpo45bh60h6bsz ~]# find /tmp -nogroup -o -nouser  ##正解
/tmp
/tmp/File1
/tmp/file1
/tmp/fstab
/tmp/wtmp
/tmp/FILE1
[root@izpo45bh60h6bsz ~]# find /tmp -nogroup -o -nouser -ls  ###有问题
819226    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/File1
819218    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/file1
819227    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/FILE1#############组合条件中,-ls仅显示靠近ls的条件所匹配的内容#############[root@izpo45bh60h6bsz ~]# find /tmp \( -nogroup -o -nouser \) -ls  ##正解
819201    4 drwxrwxrwt   2 root     10009        4096 Jun 12 22:54 /tmp
819226    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/File1
819218    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/file1
819228    4 -rw-r--r--   1 root     10010         358 Jun 12 22:53 /tmp/fstab
819232   16 -rw-rw-r--   1 root     10010       13056 Jun 12 22:54 /tmp/wtmp
819227    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/FILE1## \( \) 仅为了方便显示2)tmp下owner不是root且文件名不是fstab
[root@izpo45bh60h6bsz ~]# find /tmp -not -user root -a -not -name "fstab"
/tmp/File1
/tmp/file1
/tmp/FILE1
[root@izpo45bh60h6bsz ~]# find /tmp \( -not -user root -a -not -name "fstab" \) -ls
819226    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/File1
819218    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/file1
819227    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/FILE1root@izpo45bh60h6bsz ~]# find /tmp -not \( -user root -o -name "fstab" \) -ls
819226    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/File1
819218    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/file1
819227    0 -rw-r--r--   1 10003    root            0 Jun 12 22:31 /tmp/FILE1
###由摩根定律变化

根据文件大小来查找

-size [+|-]#UNIT

UNIT: K M G

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

-size  #UNIT  (#-1,#]

-size +#UNIT (#,+oo]

1、文件大小等于3k的文件 (2,3]
[root@izpo45bh60h6bsz ~]# find /var -size 3k -exec ls -lh {} \;
....
-rw-r--r-- 1 root root 2.9K Jul 24  2017 /var/lib/docker/volumes/1c198521fea9eb05afa8605bb9be3c5651a1be303d3b7d06f0a74302e5f2217a/_data/cphalcon/build/_resource/Phalcon/Build/Generator/Safe.php
-rw-r--r-- 1 root root 2.2K Jul 24  2017 /var/lib/docker/volumes/1c198521fea9eb05afa8605bb9be3c5651a1be303d3b7d06f0a74302e5f2217a/_data/cphalcon/build/php7/64bits/build/mkdep.awk
-rw-r--r-- 1 root root 2.2K Jul 24  2017 /var/lib/docker/volumes/1c198521fea9eb05afa8605bb9be3c5651a1be303d3b7d06f0a74302e5f2217a/_data/cphalcon/build/php7/64bits/config.h
-rw-rw---- 1 102 105 3.0K Jun  5 11:01 /var/lib/docker/volumes/820559fb16372047d77b04198c7acb2558d28a2e5dba2a552fafe752c51e2657/_data/mysql/help_category.MYI
-rw-rw---- 1 102 105 3.0K Jun 28  2017 /var/lib/docker/volumes/d5a21db1e5e6cc3156c1b65df2c02c2f621a04624dfbfe0b43f985a001a7621b/_data/mysql/help_category.MYI
-rw-rw---- 1 102 105 3.0K Jun 28  2017 /var/lib/docker/volumes/78877a432184402ad398d087e11c60327518a8aa33837d2d33d5a65965b25e2a/_data/mysql/help_category.MYI
-rw-rw-rw- 1 root root 2.3K Jul 24  2017 /var/lib/docker/containers/1d72cfe7c1a3334018d24c835abba40a3304ea80c10b5f77870f9fea3d16235d/config.v2.json
-rw-r--r-- 1 root root 2.2K Jun 14  2017 /var/lib/pcsd/pcs_users.conf
......2、文件大小 小于3k的文件 [0,2]
[root@izpo45bh60h6bsz ~]# find /var -size -3k -exec ls -lh {} \;
30873eee5c6a71770e65619fac9686fd3e434c63/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/etc/inittab
-rw-r--r-- 1 root root 295 Dec 14  2015 /var/lib/docker/volumes/4e61477adc56ecfceb1f629130873eee5c6a71770e65619fac9686fd3e434c63/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/etc/profile.d/color_prompt
-rw-r--r-- 1 root root 42 Dec 14  2015 /var/lib/docker/volumes/4e61477adc56ecfceb1f629130873eee5c6a71770e65619fac9686fd3e434c63/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/etc/hosts
-rw-r--r-- 1 root root 10 Dec 14  2015 /var/lib/docker/volumes/4e61477adc56ecfceb1f629130873eee5c6a71770e65619fac9686fd3e434c63/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/etc/hostname
-rw-r--r-- 1 root root 65 Dec 16  2015 /var/lib/docker/volumes/4e61477adc56ecfceb1f629130873eee5c6a71770e65619fac9686fd3e434c63/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/etc/securetty
-rw-r--r-- 1 root root 1.2K Jan 14  2016 /var/lib/docker/volumes/4e61477adc56ecfceb1f629130873eee5c6a71770e65619fac9686fd3e434c63/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/usr/share/ca-certificates/mozilla/Sonera_Class_2_Root_CA.crt
-rw-r--r-- 1 root root 1.3K Jan 14  2016 /var/lib/docker/volumes/4e61477adc56ecfceb1f629130873eee5c6a71770e65619fac9686fd3e434c63/_data/vfs/dir/27fecbb711f7d6f520a4e32051645fe2b8aafb4406215e46d2b1c7cdadb8e597/usr/share/ca-certificates/mozilla/Deutsche_Tele3、文件大小 大于3k的文件 (3,+oo)
drwxr-xr-x  2 root root 4.0K Jun  6 11:22 02ae32a463293daba05d702b0c157beac3b62da3-samba-common-libs-4.4.4-14.el7_3-x86_64
drwxr-xr-x  2 root root 4.0K Jul 31  2017 07c18fc8a3449cf6abc357860ebcca7121ef410c-selinux-policy-3.13.1-102.el7_3.16-noarch
drwxr-xr-x  2 root root 4.0K May 18 17:56 0c9550ff7f47e27a0bce727be65f5ecbccaffa37-screen-4.1.0-0.23.20120314git3c2946.el7_2-x86_64
drwxr-xr-x  2 root root 4.0K Feb 24 03:08 13fd3e30a775cdc312d449d9880a34d470a04f88-systemtap-runtime-3.0-7.el7-x86_64
drwxr-xr-x  2 root root 4.0K Jul 31

根据时间戳

-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 [+|-]#

1、准备3个文件
[root@izpo45bh60h6bsz tmp]# touch a b c
[root@izpo45bh60h6bsz tmp]# ll
total 0
-rw-r--r-- 1 root root 0 Aug  4 19:49 a
-rw-r--r-- 1 root root 0 Aug  4 19:49 b
-rw-r--r-- 1 root root 0 Aug  4 19:49 c2、修改a为距离现在有3天 8/1 19:00刚好3天,不满4天即可
[root@izpo45bh60h6bsz tmp]# touch -a -t 201708011700.00 a
[root@izpo45bh60h6bsz tmp]# stat a
Access: 2017-08-01 17:00:00.000000000 +0800
Modify: 2017-08-04 19:49:55.910297650 +0800
Change: 2017-08-04 19:51:57.971293624 +0800
3、修改b为距离现在小于3天, 8/1 19:00 至今天
[root@izpo45bh60h6bsz tmp]# touch -a -t 201708012000.00 c
[root@izpo45bh60h6bsz tmp]# stat c
Access: 2017-08-01 20:00:00.000000000 +0800
Modify: 2017-08-04 19:49:55.910297650 +0800
Change: 2017-08-04 19:52:40.346292227 +0800
4、修改c为距离现在大于3天 7/31 19:00整,到过去
[root@izpo45bh60h6bsz tmp]# touch -a -t 201707311930.00 b
[root@izpo45bh60h6bsz tmp]# stat b
Access: 2017-07-31 19:30:00.000000000 +0800
Modify: 2017-08-04 19:49:55.910297650 +0800
Change: 2017-08-04 19:57:06.459283447 +0800搜索/tmp下访问距离现在有3天
[root@izpo45bh60h6bsz tmp]# find /tmp -atime 3
/tmp/a
搜索/tmp下访问距离现在小于3天
[root@izpo45bh60h6bsz tmp]# touch -a -t 201708012000.00 c
[root@izpo45bh60h6bsz tmp]# find /tmp -atime -3
/tmp/c
搜索/tmp下访问距离现在大于3天
[root@izpo45bh60h6bsz tmp]# find /tmp -atime +3
/tmp/b

根据权限查找

-perm [/|-]MODE

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

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

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

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

[root@izpo45bh60h6bsz tmp]# find /etc -perm 000 -ls
541665    4 ----------   1 root     root         1399 Jun 12 23:04 /etc/gshadow
540719    4 ----------   1 root     root         2895 Jun 12 23:04 /etc/shadow-
541797    4 ----------   1 root     root         2866 Jun 12 23:04 /etc/shadow
540711    4 ----------   1 root     root         1410 Jun 12 23:04 /etc/gshadow-

2、权限至少为MODE权限

[root@izpo45bh60h6bsz tmp]# find /etc -perm -400 -ls
540724  660 -rw-r--r--   1 root     root       670293 Jun  7  2013 /etc/services
540806    4 -rw-r--r--   1 root     root         1982 Dec 22  2016 /etc/virc
541461    4 -rw-r--r--   1 root     root          767 May 22 21:40 /etc/netconfig
541630    4 -rw-r-----   1 root     named        1715 Jul 10 13:58 /etc/named.conf
541588    4 -r--r-----   1 root     root         3907 Jun 23 03:42 /etc/sudoers
#也就是属主的权限,至少有r权限.属组和其他用户的权限至少为0[root@izpo45bh60h6bsz tmp]# find /etc -perm -422 -ls
540874    0 lrwxrwxrwx   1 root     root           56 Feb 24 10:59 /etc/favicon.png -> /usr/share/icons/hicolor/16x16/apps/fedora-logo-icon.png
541531    0 lrwxrwxrwx   1 root     root           35 Jun 14 16:17 /etc/cifs-utils/idmap-plugin -> /etc/alternatives/cifs-idmap-plugin
# 属主至少4,属组至少2,其他至少2

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

[root@izpo45bh60h6bsz tmp]# find /etc -perm /422 -ls
541488   24 -rw-r--r--   1 root     root        22900 May 25 19:33 /etc/openldap/schema/samba.schema
540724  660 -rw-r--r--   属主r或w匹配
540806    4 -rw-r--r--   属主r或w匹配
541461    4 -rw-r--r--   属主r或w匹配
541630    4 -rw-r-----   属主r或w匹配
541588    4 -r--r-----   属主r匹配

转载于:https://blog.51cto.com/sonlich/1953698

谢烟客---------Linux之find查找相关推荐

  1. Linux下ps查找进程用kill终止命令

    Linux下ps查找进程用kill终止命令<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:offic ...

  2. linux查找最近访问的文件,教您在Linux系统中查找最近修改的文件/文件夹

    如果您使用Linux系统进行日常操作,则主目录文件将随时间急剧增加.如果您有成千上万个文件,很可能不记得最近更改的文件名,本文将教您在Linux系统中查找最近修改的文件/文件夹.另外,如果要检查出于任 ...

  3. Linux make menuconfig查找并快速跳转指定驱动选项

    /*********************************************************************** Linux make menuconfig查找并快速跳 ...

  4. linux用grep查找包含两个关键字的命令

    linux用grep查找包含两个关键字的命令 http://zhidao.baidu.com/link?url=VsFxeJXmU7W7hy1UH7eT6QAbUsVz9Ru2ABPuWYHWm4kB ...

  5. Linux中文件查找技术大全

    Linux中文件查找技术大全 转载出处:http://tech.sina.com.cn/c/2001-10-29/6739.html 文/Linuxdoor 每一种操作系统都是由成千上万个不同种类的文 ...

  6. Linux 下如何查找木马并处理

    Linux 下如何查找木马并处理 1.cat /etc/passwd 未发现陌生用户和可疑root权限用户. 2.netstat -anp 查看所有进程及pid号,未发现异常连接. 3.last 查看 ...

  7. linux 查找只读文件夹,Linux系统中查找命令find的使用方法(二)

    今天达内Linux培训小编要继续跟大家分享关于Linux系统中中查找命令find的使用方法的文章.在上文中小编提到,Linux查找命令是Linux系统中很重要也是很常用的命令之一.Linux的查找命令 ...

  8. linux用grep查找文件内容

    2019独角兽企业重金招聘Python工程师标准>>> linux用grep查找文件内容 博客分类: java 从文件内容查找匹配指定字符串的行:  $ grep "被查找 ...

  9. 5 个用于在 Linux 终端中查找域名 IP 地址的命令

    5 个用于在 Linux 终端中查找域名 IP 地址的命令 本教程介绍了如何在 Linux 终端验证域名或计算机名的 IP 地址.本教程将允许你一次检查多个域.你可能已经使用过这些命令来验证信息.但是 ...

  10. linux 命令美丽,美丽的程序猿-Linux下那些查找文件的小技巧-find

    原标题:美丽的程序猿-Linux下那些查找文件的小技巧-find 一.按照文件名匹配查找 1. 查找当前目录下的文件tmp.sh find . –name tmp.sh 可以看出,使用.查找是查找当前 ...

最新文章

  1. java cache system_Java Cache System JCS(一) 使用方法
  2. CAN总线简明易懂教程(三)
  3. 分区和分片的区别_数据库的分表、分库、分片和分区等区别
  4. HTTPS协议之SSL/TLS协议四次握手
  5. MFC 使用datetimepicker获取时间
  6. vue 圆形百分比进度条_vue实用组件——圆环百分比进度条
  7. Storage API简介和存储限制与逐出策略
  8. 站怎么点都是一样_老鼠被卡在轮胎里,像是被点了穴道一样:这可怎么办才好?...
  9. LeetCode 1562. 查找大小为 M 的最新分组
  10. python 清空文件夹_python读写文件
  11. JavaScript之 Bom+Dom
  12. 在软件测试中UT,IT,ST,UAT分别是什么意思
  13. ArcView GIS 应用与开发技术(10)-影像操作
  14. VC6下编译fltk-1.3.5
  15. 校园网里,一账号多人上网或者多账号多人上网的宿舍路由器设置方法
  16. canbus是什么意思_canbus.是什么意思
  17. ViewPage2和Fragment以及Tablayout使用
  18. 计算机的表白隐藏功能,微信还有这个功能?隐藏代码还能表白!教你高级告白手段...
  19. Git 和Bitbucket
  20. springboot闲置衣物捐赠系统毕业设计源码021009

热门文章

  1. vue filters的使用
  2. javaWeb--MVC
  3. Problem F - Football Free Kick(数组1e9的插入和删除)
  4. 传统软件厂商生存模式推演
  5. 【前端基础面试题】如何用CSS画一个三角形(详解)
  6. 一加nfc门禁卡录入_一加手机NFC门禁卡模拟加密卡教程(需root)
  7. Unity代码生成实例物体
  8. UCI-HAR数据集CNN分类
  9. linux网卡命名规则及修改ip地址
  10. flutter仿ReadHub+