Linux之find查找
查找的区别
grep 根据PATTERN逐行匹配目标文本,打印字串所在行至标准输出
find 根据查找条件在给定的路径下,查找文件名对应的文件
查找的分类
实时查找: find
根据用户给出的路径,在路径下查找
非实时查找:locate,whatis
依据事先构建的索引,在数据库中查找
手动更新数据库的命令: updatedb, makewhatis
查找的特性
find:实时。速度慢。精确匹配
locate: 非实时。速度快。模糊匹配
查找语法
|
1
2
3
4
5
|
2、获取帮助
# man find 或 find --help
3、命令格式
find
[OPTIONS...] [给出路径] [查找条件] [处理动作]
|
[给出路径]: 目录的路径,默认为当前工作目录。
[查找条件]: 指定查找的过滤条件:文件名、属主、属组、大小、权限、时间戳,默认为指定路径下的所有文件和目录
[处理动作]: 对查找的文件执行的操作,默认为标准输出
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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 命令会将符合条件的内容,一次性传递给后面的命令,有些命令或许不支持过多的参数,
此时我们应该使用
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
find
[OPTIONS...] [给出路径] [查找条件] [处理动作] |
xargs
COMMAND
xargs
命令总结:
[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
|
|
1
2
|
为了避免系统的文件不被误操作,
# cd /tmp
|
-ls 类似ls -l,对所有查找到的文件或目录执行 ls -l操作。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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
2
3
4
5
6
7
8
9
10
|
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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通配符 ? * [] [^] 字符集
|
1
2
3
4
5
6
7
8
9
10
11
|
[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
2
3
4
5
6
7
8
9
10
11
|
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\} ()
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[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
2
3
4
5
6
7
8
9
10
11
12
|
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/FILE1
2、查找属主为Myser的文件
[root@izpo45bh60h6bsz ~]
# find /tmp -user myuser
/tmp/File1
/tmp/file1
/tmp/FILE1
|
-group GROUP 查找属组为 指定组的文件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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
2
3
4
5
6
7
8
9
|
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
2
3
4
5
6
7
8
|
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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 FILE1
2、确认为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 FILE1
3、查找
[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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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 wtmp
2、确认为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 wtmp
3、查找
[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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
1、查找
/etc/
目录下为目录的文件
[root@izpo45bh60h6bsz ~]
# find /etc -type d
...
/etc/python
/etc/statetab
.d
/etc/openldap
/etc/openldap/certs
/etc/openldap/schema
2、查找/下为套接字的文件
[root@izpo45bh60h6bsz ~]
# find / -type s -ls
...
6767 0 srw-rw-rw- 1 root root 0 Jul 31 2017
/run/systemd/journal/stdout
6751 0 srwx------ 1 root root 0 Jul 31 2017
/run/systemd/cgroups-agent
6749 0 srwxrwxrwx 1 root root 0 Jul 31 2017
/run/systemd/notify
3、查找
/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/File1
4、查找
/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 -ls
112 0 prw------- 1 root root 0 Jul 31 14:51
/var/lib/nfs/rpc_pipefs/gssd/clntXX/gssd
9614 0 prw------- 1 root root 0 Jul 31 14:50
/run/dmeventd-client
9613 0 prw------- 1 root root 0 Jul 31 14:50
/run/dmeventd-server
66518 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 -ls
8067 0 brw-rw---- 1 root disk 253, 1 Jul 31 14:51
/dev/vda1
8064 0 brw-rw---- 1 root disk 253, 0 Jul 31 14:50
/dev/vda
8041 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
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/FILE1
2)没有属组的文件
[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/FILE1
root@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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
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_Tele
3、文件大小 大于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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
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 c
2、修改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指定的权限
|
1
2
3
4
5
|
[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权限
|
1
2
3
4
5
6
7
8
9
10
11
12
|
[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、某类用户的某位权限匹配,即可
|
1
2
3
4
5
6
7
|
[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匹配
|

