目录
LInux之find查找
定义
详解
格式
参数及作用
详解
1.按照文件名搜索
2.按照文件大小搜索
3.按照修改时间搜索
4.按照权限搜索
5.按照所有者和所属组搜索
6.按照文件类型搜索
7.逻辑运算符
8.其他选项
-exec参数
获取到该目录中所有以host开头的文件列表
如在整个系统中搜索权限中包括SUID权限的所有文件
LInux之find查找
定义
find命令 --- 用于按照指定条件来查找文件
详解
在Linux系统中,搜索工作一般都是通过find命令来完成的,它可以使用不同的文件特性作为寻找条件(如文件名、大小、修改时间、权限等信息),一旦匹配成功则默认将信息显示到屏幕上
格式
find [查找路径] 寻找条件 操作
参数及作用
参数 | 作用 |
-name
|
匹配名称
|
-perm
|
匹配权限(
mode
为完全匹配,
-mode
为包含即可)
|
-user
|
匹配所有者
|
-group
|
匹配所有组
|
-mtime -n +n
|
匹配修改内容的时间(
-n
指
n
天以内,
+n
指
n
天以前)
|
-atime -n +n
|
匹配访问文件的时间(
-n
指
n
天以内,
+n
指
n
天以前)
|
-ctime -n +n
|
匹配修改文件权限的时间(
-n
指
n
天以内,
+n
指
n
天以前)
|
-nouser
|
匹配无所有者的文件
|
-nogroup
|
匹配无所有组的文件
|
-newer f1 !f2
|
匹配比文件
f1
新但比
f2
旧的文件
|
--type b/d/c/p/l/f
|
匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
|
-size
|
匹配文件的大小(
+50KB
为查找超过
50KB
的文件,而
-50KB
为查找小于
50KB
的文件)
|
-prune
|
忽略某个目录
|
-exec …… {}\;
|
后面可跟用于进一步处理搜索结果的命令
|
详解
1.按照文件名搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-name: 按照文件名搜索
-iname: 按照文件名搜索,不区分文件名大小写
-inum: 按照 inode 号搜索
2.按照文件大小搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-size [+|-]大小: 按照指定大小搜索文件
这里的“+”的意思是搜索比指定大小还要大的文件, “-”的意思是搜索比指定大小还要小的文件
find -size -n --- 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
3.按照修改时间搜索
Linux中的文件由atime(访问时间)、数据修改时间(mtime)、状态修改时间(ctime)这三个时间,我们也可以按照时间来搜索文件
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-atime [+|-]时间: 按照文件访问时间搜索
-mtime [+|-]时间: 按照文件数据修改时间搜索
-ctime [+|-]时间: 按照文件状态修改时间搜索
参数 | 作用 |
-atime n | 将n 24小时内存取过的文件列出来 |
-ctime n | 将n 24小时内改变、新增的文件裹着目录列出来 |
-mitime n | 将n*24小时内修改过的文件或者目录列出来 |
-newer file | 把比file还要新的文件列出来 |
图中最右边为目前时间,越往左则代表越早之前的时间轴
+4 --- 代表大于等于5天前的文件档名:find /var -mtime +4
-4 --- 代表小于等于4天内的文件档名:find /var -mtime -4
4 --- 代表4 -5 那一天的文件档名:find /var -mtime 4
- -5:代表 5 天内修改的文件
- 5:代表前 5~6 天那一天修改的文件
- +5:代表 6 天前修改的文件
[root@localhost /]# find /var -mtime -5
[root@localhost /]# find /var -mtime 5
[root@localhost /]# find /var -mtime +5
4.按照权限搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-perm 权限模式: 查找文件权限刚好等于“权限模式”的文件
-perm -权限模式: 查找文件权限全部包含“权限模式”的文件
-perm +权限模式: 查找文件权限包含“权限模式”的任意一个权限的文件
5.按照所有者和所属组搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-uid 用户 ID: 按照用户 ID 查找所有者是指定 ID 的文件
-gid 组 ID: 按照用户组 ID 查找所属组是指定 ID 的文件
-user 用户名: 按照用户名查找所有者是指定用户的文件
-group 组名: 按照组名查找所属组是指定用户组的文件
-nouser: 查找没有所有者的文件
6.按照文件类型搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-type d: 查找目录
-type f: 查找普通文件
-type l: 查找软链接文件
7.逻辑运算符
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-a: and 逻辑与
-o: or 逻辑或
-not: not 逻辑非
表示查找 /test目录下所有文件名以 .txt 结尾且文件大小大于 0MB 的文件。
8.其他选项
-exec参数
这个参数用于把find命令搜索到的结果交由紧随其后的命令作进一步处理,它十分类似于管道符技术,并且由于find命令对参数的特殊要求,因此虽然exec是长格式形式,但依然只需要一个减号(-)
find . -name "*.txt" -exec chmod 666 {} \;
在这个命令中,"."表示从当前目录开始查找,"-name"参数表示查找文件名匹配指定模式的文件,"*.txt"表示查找扩展名为.txt的文件,"-exec"参数用于在找到的文件上执行一个命令,"chmod 666 {}"表示将找到的文件的权限设置为可读写,";"用于表示命令的结束。注意,在使用-exec参数时,{}表示找到的文件名。
获取到该目录中所有以host开头的文件列表
[root@localhost /]# find /etc -name "host*" -print
如在整个系统中搜索权限中包括SUID权限的所有文件
[root@localhost /]# find / -perm -4000 -print