动动小手
点个关注~
在 Linux 系统中,find 是一个非常强大且常用的命令,常用于在文件系统中查找文件和目录。无论是查找特定名称的文件、按权限或时间筛选,还是执行批量操作,find 都能胜任。
前面也陆陆续续的介绍过一些find命令,但都是一些零散的命令。
本文将为你系统地介绍 find 命令在linux中使用的语法、常用选项和实用示例,帮助你快速掌握这一利器。一、find 命令基本语法
find [搜索路径] [查找条件] [处理动作] #find基本语法结构搜索路径:指定要搜索的目录,默认为当前目录。
查找条件:定义查找的标准,如文件名、类型、大小、权限等。
处理动作:对符合条件的文件执行操作,如显示、删除、重命名等
二、常用查找条件1. 按文件名查找-name:按文件名查找,支持通配符 *、?、[]
*:代表匹配任意字符,*.txt代表以txt后缀的文件。
?:代表匹配一个字符,ab?.txt代表ab后面只有一个字符。
[]:匹配字符集中的任意一个,如[0-9]代表匹配任意一个数字。
find . -name "*.txt" #查找当前目录下以txt后缀的文件 
find . -iname "Ab*.txt" #查找以ab开头的txt文件,不区分字母的大小写 
find . -name "ab?.txt" #查找当前目录下以ab开头,中间有个字符,并以txt后缀的文件 ,注意为英文? 
find . -name "[0-9]*.txt" #查找以数字开头的后为txt的文件 
2. 按文件类型查找-type f:普通文件。-type d:目录。-type l:符号链接。-type s:套接字文件。-type b:块设备文件。-type c:字符设备文件。-type p:命名管道文件。
find . -type f -name "*.log" #查找以log为后缀的普通文件
3. 按文件大小查找-size +N:大于 N 的文件。-size -N:小于 N 的文件。-size N:等于 N 的文件。单位支持:c(字节)、k(KB)、M(MB)、G(GB)。
find . -size +100M #查找当前目录大于100M的文件
4. 按时间查找-mtime:修改时间(单位为天)。-atime:访问时间。-ctime:状态改变时间。-mmin:修改时间(单位为分钟)。-amin:访问时间(单位为分钟)。-cmin:状态改变时间(单位为分钟)。
find . -mtime -7 # 查找最近7天修改的文件
find . -mmin +30 # 查找30分钟前修改的文件
备注:文件太多,为便于演示,只显示了前10个。
5. 按权限查找
find . -perm 755 #查找当前目录下权限是755的文件
6. 按属主或属组查找-user:按文件属主查找。-group:按文件属组查找。
find . -user ftpuser #查找当前目录下属主是ftpuser的文件find . -group root #查找当前目录文件属组是ftpuser的文件
三、常用处理动作-print:默认动作,输出匹配结果。-exec:对每个匹配文件执行命令。-ok:与 -exec 类似,但会提示用户确认。-delete:删除匹配的文件。-ls:以 ls -l 格式显示文件。
find . -name "*.tmp" -exec rm {} \; #查找当前目录后缀是tmp的文件并删除
四、高级用法示例1. 查找空文件或空目录
find . -type f -empty #查找当前目录下的空文件
find . -type d -empty #查找当前目录下的空目录
2. 查找多个目录下的文件
find /home /var -name "*.conf" #查找home和var下的后缀是conf的文件
3. 按文件权限和修改时间组合查找
find . -type f -perm 755 -mtime +10 #查找当前目录下权限是755修改时间在10天以上的文件
4. 限制搜索层级
find . -maxdepth 2 -name "*.sh" #查找当前目录下最深2级的以sh为后缀的文件
5. 按 inode 查找
find . -inum 50812070 #查找inode值是50812070的文件
五、实用场景1. 清理临时文件
find /tmp -type f -mtime +7 -delete #将7天前的tmp文件下的内容进行删除
备注:里面部分是镜像只读文件,所以无法删除2. 批量重命名文件
find . -name "*.bak" -exec mv {} {}.old \; #将当前目录下的bak后缀的文件命名为old后缀
find . -name "*.bak" -exec mv {} {}.old + #+适合批量执行的时候,能够提高效率 
3. 查找大文件
find . -type f -size +100M -exec ls -lh {} \; #查找当前目录下大于100M的文件执行ls -lh命令 
六、总结以上只演示了find的常规用法,还有许多复杂用法可以结合实际情况进行使用。总的来说。find 命令是 Linux 系统中非常强大的文件查找工具,掌握其语法和常用选项,可以极大提升文件管理效率。无论是日常维护还是相关脚本编写,find 都是不可或缺的利器。

注意事项:
使用 -exec 时,\之前有个空格,并且注意结尾为 \;,这是为了防止 shell 解析错误,如果要执行多个命令,可以使用 + 替代 \;,以提高效率。如需进一步了解,可参考 man find 或查阅相关文档。希望这篇文章能帮助你更好地使用 find 命令,提升 Linux 操作效率!