本文共 2580 字,大约阅读时间需要 8 分钟。
目录
搜索命令 find
find 命令
- find 命令的基本信息如下。
- 命令名称:find。
- 英文原意:search for files in a directory hierarchy。
- 所在路径:/bin/find。
- 执行权限:所有用户。
- 功能描述:在目录中搜索文件。
按照文件名搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
- 选项:
- -name: 按照文件名搜索
- -iname: 按照文件名搜索,不区分文件名大小写
- -inum: 按照 inode 号搜索


按照文件大小搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
- 选项:
- -size [+|-]大小: 按照指定大小搜索文件
- 这里的“+”的意思是搜索比指定大小还要大的文件,“-”的意思是搜索比指定大小还要小的文件。
[root@localhost ~]# man find -size n[cwbkMG] File uses n units of space. The following suffixes can be used: 'b' for 512-byte blocks (this is the default if no suffix is used)#这是默认单位,如果单位为 b 或不写单位,则按照 512 Byte 搜索 'c' for bytes#搜索单位是 c,按照字节搜索 'w' for two-byte words#搜索单位是 w,按照双字节(中文)搜索 'k' for Kilobytes (units of 1024 bytes)#按照 KB 单位搜索,必须是小写的 k 'M' for Megabytes (units of 1048576 bytes)#按照 MB 单位搜索,必须是大写的 M 'G' for Gigabytes (units of 1073741824 bytes)#按照 GB 单位搜索,必须是大写的 G
按照修改时间搜索
- Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个时间,我们也可以按照时间来搜索文件。
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
- 选项:
- -atime [+|-]时间: 按照文件访问时间搜索
- -mtime [+|-]时间: 按照文件数据修改时间搜索
- -ctime [+|-]时间: 按照文件状态修改时间搜索
- “[+-]”时间的含义。
- -5:代表 5 天内修改的文件。
- 5:代表前 5~6 天那一天修改的文件。
- +5:代表 6 天前修改的文件。

按照权限搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
- 选项:
- -perm 权限模式: 查找文件权限刚好等于“权限模式”的文件
- -perm -权限模式:查找文件权限全部包含“权限模式”的文件
- -perm +权限模式:查找文件权限包含“权限模式”的任意一个权限的文件


按照所有者和所属组搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
- 选项:
- -uid 用户 ID: 按照用户 ID 查找所有者是指定 ID 的文件
- -gid 组 ID: 按照用户组 ID 查找所属组是指定 ID 的文件
- -user 用户名: 按照用户名查找所有者是指定用户的文件
- -group 组名: 按照组名查找所属组是指定用户组的文件
- -nouser: 查找没有所有者的文件
- 按照所有者和所属组搜索时,“-nouser”选项比较常用,主要用于查找垃圾文件。
- 只有一种情况例外,那就是外来文件。
- 比如光盘和 U 盘中的文件如果是由 Windows 复制的,在Linux 中查看就是没有所有者的文件;
- 再比如手工源码包安装的文件,也有可能没有所有者

按照文件类型搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
- 选项:
- -type d: 查找目录
- -type f: 查找普通文件
- -type l: 查找软链接文件

逻辑运算符
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
- 选项:
- -a: and 逻辑与
- -o: or 逻辑或
- -not(!): not 逻辑非
- -a:and 逻辑与
- find 命令也支持逻辑运算符选项,其中-a 代表逻辑与运算,也就是-a 的两个条件都成立,find 搜索的结果才成立。举个例子:
[root@localhost ~]# find . -size +2k -a -type f#在当前目录下搜索大于 2KB,并且文件类型是普通文件的文件
- -o:or 逻辑或
- -o 选项代表逻辑或运算,也就是-o 的两个条件只要其中一个成立,find 命令就可以找到结果。例如:
[root@localhost ~]# find . -name cangls -o -name bols./cangls./bols#在当前目录下搜索文件名要么是 cangls 的文件,要么是 bols 的文件
[root@localhost ~]# find . -not -name cangls#在当前目录下搜索文件名不是 cangls 的文件
其他选项
-exec 选项
- 这里我们主要讲解两个选项“-exec”和“-ok”,这两个选项的基本作用非常相似。我们先来看看“-exec”选项的格式。
[root@localhost ~]# find 搜索路径 [选项] 搜索内容 -exec 命令 2 {} \;
- 其次,这个选项的作用其实是把 find 命令的结果交给由“-exec”调用的命令 2 来处理。
- “{}”就代表 find 命令的查找结果。

-ok 选项
- “-ok”选项和“-exec”选项的作用基本一致,区别在于:
- “-exec”的命令 2 会直接处理,而不询问;
- “-ok”的命令 2 在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行。

【注】:参考尚硅谷沈超老师教程
转载地址:http://vxur.baihongyu.com/