ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## **find 在目录中搜索文件** ``` [root@localhost ~]# find 搜索路径 [选项] 搜索内容 ``` >[info] 逻辑运算符 ``` -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的文件 -not:not 逻辑非 -not 是逻辑非,也就是取反的意思。举个例子: [root@localhost ~]# find . -not -name cangls #在当前目录下搜索文件名不是cangls的文件 ``` >[success] 按照文件名搜索 ``` -name: 按照文件名搜索 -iname: 按照文件名搜索,不区分文件名大小写 -inum: 按照 inode 号搜索 -size [+|-]大小: 按照指定大小搜索文件 ``` >[success] 按照修改时间搜索 ``` -atime [+|-]时间: 按照文件访问时间搜索 -mtime [+|-]时间: 按照文件数据修改时间搜索 -ctime [+|-]时间: 按照文件状态修改时间搜索 ``` >[success] 按照权限搜索 ``` -uid 用户ID :按照用户 ID 查找所有者是指定 ID 的文件 -gid 组ID :按照用户组 ID 查找所属组是指定 ID 的文件 -user 用户名 :按照用户名查找所有者是指定用户的文件 -group 组名 :按照组名查找所属组是指定用户组的文件 -nouser :查找没有所有者的文件 按照所有者和所属组搜索时,“-nouser”选项比较常用,主要用于查找垃圾文件。 ``` >[success] 按照文件类型搜索 ``` -type d:查找目录 -type f:查找普通文件 -type l:查找软链接文件 ``` >[danger] 其他选项 ``` 1)-exec 选项 这里我们主要讲解两个选项“-exec”和“-ok”,这两个选项的基本作用非常相似。 我们先来看 看“-exec”选项的格式。 [root@localhost ~]# find 搜索路径 [选项] 搜索内容 -exec 命令2 {} \; 其次,这个选项的作用其实是把 find 命令的结果交给由“-exec”调用的 命令2 来处理。 “{}”就 代表 find 命令的查找结果。 2)-ok 选项 “-ok”选项和“-exec”选项的作用基本一致,区别在于: “-exec”:的命令 2 会直接处理,而不询 问; “-ok” :的命令 2 在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行。 ``` ``` 将当前目录及其子目录下所有文件后缀为 .c 的文件列出来: # find . -name "*.c" 将当前目录及其子目录中的所有文件列出: # find . -type f 将当前目录及其子目录下所有最近 20 天内更新过的文件列出: # find . -ctime 20 查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们: # find /var/log -type f -mtime +7 -ok rm {} \; 查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件: # find . -type f -perm 644 -exec ls -l {} \; 查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径: # find / -type f -size 0 -exec ls -l {} \; ```