linux-func-find

介绍

用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

用法

1
find(选项)(参数)

选项

选项 描述
-amin<分钟> 查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-anewer<参考文件或目录> 查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
-atime<24小时数> 查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟> 查找在指定时间之时被更改过的文件或目录;
-cnewer<参考文件或目录> 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime<24小时数> 查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart 从本日开始计算时间;
-depth 从指定目录下最深层的子目录开始查找;
-delete 如果find查询成功,将执行删除
-expty 寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令> 假设find指令的回传值为True,就执行该指令;
-false 将find指令的回传值皆设为False;
-fls<列表文件> 此参数的效果和指定-ls参数类似,但会把结果保存为指定的列表文件;
-follow 排除符号连接;
-fprint<列表文件> 此参数的效果和指定-print参数类似,但会把结果保存成指定的列表文件;
-fprint0<列表文件> 此参数的效果和指定-print0参数类似,但会把结果保存成指定的列表文件;
-fprintf<列表文件><输出格式> 此参数的效果和指定-printf参数类似,但会把结果保存成指定的列表文件;
-fstype<文件系统类型> 只寻找该文件系统类型下的文件或目录;
-gid<群组识别码> 查找符合指定之群组识别码的文件或目录;
-group<群组名称> 查找符合指定之群组名称的文件或目录;
-help或--help 在线帮助;
-ilname<范本样式> 此参数的效果和指定-lname参数类似,但忽略字符大小写的差别;
-iname<范本样式> 此参数的效果和指定-name参数类似,但忽略字符大小写的差别;
-inum<inode编号> 查找符合指定的inode编号的文件或目录;
-ipath<范本样式> 此参数的效果和指定-path参数类似,但忽略字符大小写的差别;
-iregex<范本样式> 此参数的效果和指定-regexe参数类似,但忽略字符大小写的差别;
-links<连接数目> 查找符合指定的硬连接数目的文件或目录;
-iname<范本样式> 指定字符串作为寻找符号连接的范本样式;
-ls 假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
-maxdepth<目录层级> 设置最大目录层级;
-mindepth<目录层级> 设置最小目录层级;
-mmin<分钟> 查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mount 此参数的效果和指定-xdev相同;
-mtime<24小时数> 查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-name<范本样式> 指定字符串作为寻找文件或目录的范本样式;
-newer<参考文件或目录> 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup 找出不属于本地主机群组识别码的文件或目录;
-noleaf 不去考虑目录至少需拥有两个硬连接存在;
-nouser 找出不属于本地主机用户识别码的文件或目录;
-ok<执行指令> 此参数的效果和指定-exec类似,但在执行指令之前会先询问用户,若回答yY,则放弃执行命令;
-path<范本样式> 指定字符串作为寻找目录的范本样式;
-perm<权限数值> 查找符合指定的权限数值的文件或目录;
-print 假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有./字符串;
-print0 假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf<输出格式 假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-prune 不寻找字符串作为寻找文件或目录的范本样式;
-regex<范本样式> 指定字符串作为寻找文件或目录的范本样式;
-size<文件大小> 查找符合指定的文件大小的文件 b块(512字节) c字节 w字(2字节) k千字节 M兆字节 G 吉字节;
-true 将find指令的回传值皆设为True;
-type<文件类型> 只寻找符合指定的文件类型的文件 f普通文件 l符号连接 d目录 c字符设备 b块设备 s套接字 pFifo;
-uid<用户识别码> 查找符合指定的用户识别码的文件或目录;
-used<日数> 查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称> 查找符和指定的拥有者名称的文件或目录;
-version或--version 显示版本信息;
-xdev 将范围局限在先行的文件系统中;
-xtype<文件类型> 此参数的效果和指定-type参数类似,差别在于它针对符号连接检查。

参数

参数 描述
起始目录 查找文件的起始目录。

例子

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
# 在/home目录下查找以.txt结尾的文件名
find /home -name "*.txt"

# 当前目录及子目录下查找所有以.txt和.pdf结尾的文件
find . -name "*.txt" -o -name "*.pdf"

# 找出/home下不是以.txt结尾的文件
find /home ! -name "*.txt"

# 匹配文件路径或者文件
find /usr/ -path "*local*"

# 基于正则表达式匹配文件路径
find . -regex ".*\(\.txt\|\.pdf\)$"

# 向下最大深度限制为3搜索所有的普通文件
find . -maxdepth 3 -type f

# 搜索最近七天内被访问过的所有文件
find . -type f -atime -7

# 搜索恰好在七天前被访问过的所有文件
find . -type f -atime 7

# 搜索超过七天内被访问过的所有文件
find . -type f -atime +7

# 找出比file.log修改时间更长的所有文件
find . -type f -newer file.log

# 搜索大于10KB的文件
find . -type f -size +10k

# 搜索小于10KB的文件
find . -type f -size -10k

# 搜索等于10KB的文件
find . -type f -size 10k

# 删除当前目录下所有.txt文件
find . -type f -name "*.txt" -delete

# 找出自己家目录下所有的.txt文件并删除
find $HOME/. -name "*.txt" -ok rm {} \

# 找出当前目录下权限不是644的txt文件
find . -type f -name "*.txt" ! -perm 644

# 查找当前目录或者子目录下所有.txt文件,但是跳过子目录aa
find . -path "./aa" -prune -o -name "*.txt" -print

# 查找当前目录里面的ini.txt,然后有more打开
find ./ -name ini.txt -exec more {} \;