find
find命令是一种通过条件匹配在指定目录下查找对应文件或者目录的工具。匹配的条件可以是文件名称、类型、大小、权限属性、时间戳等。find命令还可以配合相关命令对匹配到的文件作出后续处理。
语法
find [路径...] [表达式]
[path...]
为需要查找文件所指定的路径。如果不指定,则默认为当前目录及其子目录。
[expression]
为匹配条件/表达式。如果未设置匹配条件,则默认查找指定目录及子目录下所有文件。
find命令 -Linux手册页
命令选项及作用
执行令 find --help
执行命令结果
参数
- -name 按照文件名查找文件。
- -type 按照文件类型查找
- -perm 按照文件权限来查找文件。
- -user 按照文件属主来查找文件。
- -group 按照文件所属的组来查找文件。
- -nogroup 查找无有效所属组的文件
- -nouser 查找无有效属主的文件
- -amin n 查找系统中最后N分钟访问的文件
- -atime n 查找系统中最后n*24小时访问的文件
- -cmin n 查找系统中最后N分钟被改变文件状态的文件
- -ctime n 查找系统中最后n*24小时被改变文件状态的文件
- -mmin n 查找系统中最后N分钟被改变文件数据的文件
- -mtime n 查找系统中最后n*24小时被改变文件数据的文件
- -newer f1 !f2 查更改时间比f1新但比f2旧的文件
- -fstype 查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
- -size n[c] 查长度为n块[或n字节]的文件
- -type b/d/c/p/l/f 查是块设备、目录、字符设备、管道、符号链接、普通文件
- -follow 如果遇到符号链接文件,就跟踪链接所指的文件
- -mount 查文件时不跨越文件系统mount点
- -prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
参数n
n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。
例如:-mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周以前修改过的文件。
- 关于时间 n 参数的说明:
- +n:查找比 n 天前更早的文件或目录。
- -n:查找在 n 天内更改过属性的文件或目录。
- n:查找在 n 天前(指定那一天)更改过属性的文件或目录。
常用命令示例
命令:find . -name test4.text
查找当前目录下名为 test4.text 的文件。
命令:find . -name "*.text"
查找当前目录下名为 * .text 的文件。
命令:find . -type f
查找当前目录及其子目录中的所有文件列出。
命令:find . -size +1k
查找当前目录下大于 1KB 的文件。
命令:find . -ctime +30
查找当前目录及其子目录下所有 30 天前及更早更新过的文件列出。
命令:find . -ctime 25
查找前目录及其子目录下所有最近 25 天前更新过的文件列出,正好 20 天前的。
命令:find . -ctime 15
查找当前目录及其子目录下所有最近 15天内更新过的文件列出。
命令:find . -type f -size 3 -exec ls -l {} \;
查找当前目录及其子目录下所有文件长度为 3 的普通文件,并列出它们的完整路径。
命令:ind /var/log -type f -mtime +35 -ok rm {} \;
查找 /test1 目录中更改时间在 35 日以前的普通文件,并在删除之前询问它们:
这个命令大家可以参考一下:linux定时删除服务器日志