Shell文件查找find命令

语法格式

- 格式
语法格式1 find [路径] [选项] [操作]

选项参数

选项 含义
-name 根据文件名查找
-perm 根据文件权限查找
-prune 该选项可以排除某些查找目录
-user 根据文件属主查找
-group 根据文件属组查找
-mtime- n | +n 根据文件更改时间查找
-nogroup 查找无有效属组的文件
-nouser 查找无有效属主的文件
-newer file1 ! file2 查找更改时间比file1新但比file2旧IDE文件
-type 按文件类型查找
-size- n +n 按文件大小查找
-mindepth n 从n级子目录开始搜索
-maxdepth n 最多搜索到n级子目录

使用

选项

常用选项

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
- name  查找/etc目录下以conf结尾的文件    find /etc -name  '*conf' ,
- iname 查找当前目录下文件名为aa的文件,不区分大小写” find . -iname aa
-user 查找文件属主为hdfs的所有文件 find . -user lyhcc
-group 查找文件属组为yarn的所有文件 find . -group mysql
-type
f 文件 find . -type f
d 目录 find . -type d
c 字符设备文件 find . -type c
b 块设备文件 find . -type b
l 链接文件 find . -type 1
p 管道文件 find . -type P
-size
-n 大小大于n的文件
+n 大小小于n的文件

例子1:查找/etc目录下小于10000字节的文件 find /ete -size -10000c
例子2:香找/ete目录下大干1M的文件 find /etc -size +1M
-mtime
-n n天以内修改的文件
+n n天以外修改的文件
n 正好n天修改的文件
例子1:查找/etc目录下5天之内修改且以conf结尾的文件find /etc -mtime -5 -name '*.conf'
例子2:查找/etc目录下10天之前修改且属主为root的文件 find /etc -mtime +10 -user root
-mmin
-n n分钟以内修改的文件
+n n分钟以外修改的文件
例子1:查找/etc目录下30分钟之前修改的文件 find /etc -mmin +30
例子2:查找/etc目录下30分钟之内修改的目录 find /etc -mmin -30 -type d
-mindepth
n 表示从n级子目录开始搜索
例子:在/etc下的3级子目录开始搜索 find /etc -mindepth 3
-maxdepth
n 表示最多搜索到n级子目录
例子1:在/etc下搜索符合条件的文件,但最多搜索到2级子目录find /etc -maxdepth 3 -name "文件条件"
例子2: find ./etc/ -type f -name "*.conf" -size +10k -maxdepth 2

其他选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-nouser     查找没有属主的用户
例子: find . -type f -nouser
-nogroup 查找没有属组的用户
例子: find . -type f -nogroup
-perm
例子: find . -perm 664
-prune 通常和-path-起使用,用于将特定目录排除在搜索条件之外
例子1:查找当前目录下所有普通文件,但排除test目录
find . -path ./test -prune -o -type f
例子2:查找当前目录下所有普通文件,但排除etc和opt 目录
find . -path ./etc -prune -o -path ./opt -prune -o -type f
例子3:查找当前目录下所有普通文件,但排除etc和opt 目录,但属主为hdfs
find . -path ./etc -prune -o -path ./opt -prune -o -type f -a -user hdfs
例子4:查找当前目录下所有普通文件,但排除etc和opt目录,但属主为hdfs,且文件大小必须大于500字节
find . -path ./etc -prune -o -path ./opt -prune -o -type f -a -user hdfs -a -size +500c
-newer file1
例子: find /etc -newer a

案例–找短命对应的cnf文件配置项个数

操作

1
2
3
4
5
6
7
8
9
10
11
12
13
-print  打印输出(默认)
-exec 对搜索到的文件执行特定的操作,格式为-exec 'command' {} \;

{}表示前面搜索的结果
\;固定格式

例子1:搜索/etc下的文件(非目录),文件名以conf结尾,且大于10k, 然后将其删除
find ./etc/ -type f -name '*.conf' -size +10k -exec rm -f {} \;
例子2:将/vax/1og/ 目录下以1og结尾的文件,且更改时间在7天以上的删除
find /var/1og/ -name '*.1og' -mtime +7 -exec rm -rf {} \; .
例子3:搜索条件和例子1一样, 只是不删除,而是将其复制到/root/conf目录下
find ./etc/ -size +10k -type f -name '*.conf' -exec cp {} /root/conf/ \;
-ok 和exec功能一样,只是每次操作都会给用户提示

逻辑运算符

1
2
3
4
5
6
7
8
9
10
-a      与
-o 或
-not|! 非
例子1:查找当前目录下,属主不是hdfs的所有文件
find . -not -user hdfs I
find . ! -user hdfs
例子2:查找当前目录下,属主属于hdfs,且大小大于300字节的文件
find . -type f -a -user hdfs -a -size +300c
例子3:查找当前目录下的属主为hdfs或者以xml结尾的普通文件
find . -type f -a \( -user hdfs -o -name '*.xml' \)

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×