昨天推荐:每天学一个Linux命令(19):rm命令介绍find命令在文件系统中搜索文件和目录。find命令用于查找指定目录下的文件,参数前的任何字符串都将被视为目录名。使用find命令时,如果不设置任何参数,find命令会在当前目录下搜索子目录和文件,并显示所有找到的子目录和文件。find也是Linux系统上一个非常强大的文件处理工具。它可以单独查找文件,也可以结合其他程序(命令)对需要处理的文件进行操作。Linux文件类型补充说明:f#普通文件l#符号链接d#目录c#字符设备b#块设备s#Socketp#FifoUNIX/Linux文件系统每个文件有三个时间戳:访问时间(-atime/day,-amin/minute:用户上次访问时间。修改时间(-mtime/day,-mmin/minute):文件最后修改的时间。更改时间(-ctime/day,-cmin/minute):文件元数据(如权限等)语法格式find[目录路径][选项][文件名]find[-H][-L][-P][-Ddebugopts][-Olevel][path...][expression]选项说明-amin:#查找指定时间内被访问过的文件或目录,以分钟为单位-mmin:#查找指定时间内更改过的文件或目录,单位分钟-mtime<24小时>:#查找指定时间内更改过的文件或目录,单位24小时-atime<24小时>:#查找时间指定时间已经写入的文件或目录,单位是24小时-cmin<分钟>:#查找指定时间内发生变化的文件或目录-ctime<24小时>:#查找文件或directory指定时间改变的文件或目录,单位以24小时计算-daystart:#从今天开始计算时间-depth:#从指定目录下最深的子目录开始搜索-exec<执行命令>:#如果find命令的返回值为True,就执行命令-false:#设置find命令的返回值为False-fstype<文件系统类型>:#只搜索指定文件下的文件或目录systemtype-gid<组标识码>:#查找与该组ID匹配的文件或目录-group<组名>:#查找与该组名匹配的文件或目录-help或--help:#帮助信息-links<连接号>:#根据硬链接数查找匹配的指定文件或目录-maxdepth:#设置搜索的最大目录层级-mindepth:#设置搜索的最小目录层级-name:#指定字符串作为搜索文件或目录模板-path:#指定字符串作为模板样式搜索目录-perm:#查找符合指定权限的文件或目录value-size:#查找匹配指定文件大小相同的文件-true:#设置find命令的返回值为True-type:#只查找匹配指定文件类型的文件-uid<用户识别码>:#只查找匹配指定用户ID的文件或目录-user:#只查找匹配指定所有者名称的文件或目录-version:#显示版本信息应用示例当前目录搜索所有文件,文件内容包含“192.168.1.111的内容”找到。-typef-name"*"|xargsgrep"192.168.1.111"根据文件或正则表达式匹配,找到需要的文件或目录#列出当前目录及子目录下的所有文件和文件夹[root@centos7~]#find.#在/mingongge目录下找到mingongge开头的文件[root@centos7~]#find/mingongge-name"mingongge*.log"/mingongge/mingongge_errors.log/mingongge/mingongge.log/mingongge/mingongge_test.log#在当前目录及子目录下查找所有以.txt和.log结尾的文件[root@centos7~]#find.(-name"*.txt"-o-name"*.log")或[root@centos7~]#find.-name"*.txt"-o-name"*.log"#匹配文件路径或文件[root@centos7~]#find/usr/-path"*txt*"#根据正则表达式匹配文件路径[root@centos7~]#找到.-regex".*(.txt|.log)$"#忽略大小写[root@centos7~]#find.-iregex".*(.txt|.log)$"查找负参数使用示例#查找/mingongge下不以.log结尾的文件[root@centos7~]#find/mingongge!-name"*.log"根据目录深度搜索#最大向下深度限制为5[root@centos7~]#find.-maxdepth5-typef#从当前目录搜索深度至少为3个子目录的所有文件[root@centos7~]#find.-mindepth3-typef根据文件时间戳搜索#查找最近10天内访问过的所有文件[root@centos7~]#find.-typef-atime-10#查找10天以上访问过的所有文件[root@centos7~]#find.-typef-atime+10#查找所有访问时间超过20分钟的文件[root@centos7~]#find.-typef-amin+20#查找所有修改时间比民工哥长的文件[root@centos7~]#find.-typef-newermingonggedeletefoundmatchingfiles#删除当前目录下所有.txt文件[root@centos7~]#find.-typef-name"*.txt"-delete根据文件权限/所有权匹配:#查找当前目录下权限为777的文件[root@centos7~]#find.typef-usermingongge#找出当前目录下所有用户组为mingongge的文件[root@centos7~]#find.~]#找到。-typef-name"*.log"!-perm644find和-exec选项结合使用#在当前目录下查找属主为root的文件,并将属主更改为用户mingongge[root@centos7~]#find.-typef-userroot-exec民工哥{};#找出当前用户家目录下的所有.log文件,执行删除动作[root@centos7~]#find$HOME/.-name"*.log"-execrm{};#查找当前目录下的所有.log文件拼接写入文件mingongge.txt[root@centos7~]#find.-typef-name"*.log"-execcat{};>/mingongge.txt#找出10天前的.log文件,然后全部移动到mingongge目录[root@centos7~]#find.-typef-mtime+10-name"*.log"-execcp{}mingongge;#找出当前目录下的所有.log文件,然后以“文件:文件名”的格式打印到屏幕上[root@centos7~]#find.-typef-name"*.log"-execprintf"File:%sn"{};根据文件大小查找目标文件#在当前目录下查找文件大小超过500M的文件[root@centos7~]#find.-typef-size+500M./mingongge/backup_file.tar.gz./mingongge/upload.tar.gz#查找当前目录超过500M的文件,并打印出文件的详细属性信息[root@centos7~]#寻找。-typef-size+800M-打印0|xargs-0ls-l-rw-r--r--1rootroot4250099200Apr152019./mingongge/backup_file.tar.gz-rw-r--r--1rootroot6832225765Oct1412:57。/mingongge/upload.tar.gz#查找当前目录下超过500M的文件,并打印出文件的具体大小[root@centos7~]#find.-typef-size+500M-print0|xargs-0du-h|sort-nr6.8G./mingongge/upload.tar.gz4G./mingongge/backup_file.tar.gz查找系统中前5大文件#find/-typef-print0|xargs-0杜-h|排序-rh|head-n51.1G/download/ubuntu-17.04-desktop-amd64.iso377M/download/app_backup.tar.gz100M/usr/lib/x86_64-linux-gnu/libOxideQtCore.so.093M/usr/lib/firefox/libxul.so84M/var/lib/snapd/snaps/core_3604.snap方法有很多种,都需要和其他命令结合使用才能发现。find命令在文件搜索等应用中具有强大的功能。学习系统命令,找到需要掌握的命令,无论是平时的学习还是以后的工作,这个命令都起着非常重要的作用。