find命令:
概念:find命令用来搜索文件。
格式:find 目录(path) 匹配条件
参数:
-mindepth 指定开始遍历搜索的最小深度,该参数应该放在最前面,目的是在检查操作前就确定好要查找的文件。说明:要查找的目录(path)的深度为0
-maxdepth 指定遍历搜索的最大深度,该参数应该放在最前面,目的是在检查操作前就确定好要查找的文件。说明:要查找的目录(path)的深度为0
-name 文件的名字
-size 文件的大小,单位为K、M、G。eg:-size +20k 大于20K的文件。
-mtime 指定文件(以天为单位的)的修改时间
-mtime 0 表示文件(以天为单位的)修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件
-mtime 1 表示文件(以天为单位的)修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件
-mtime +1 表示文件(以天为单位的)修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件
-mtime -1 表示文件(以天为单位的)修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件
补充:
ctime(最后change时间)、atime(最后access时间)、mtime(最后modify时间):
修改文件:ctime、atime、mtime都会修改
修改文件属性:ctime会改变
读取文件内容:atime可能会改变,不同版本的kernel实现方式不同。
-exec 命令 {} \; 把查找到的文件作为入参执行指定的命令。说明:find命令会自动将查询到的文件一行一行地赋值给 {},\; 表示命令的结束。
举例:
# 查找 目录(path) 下所有 修改时间大于2天 的文件
find 目录(path) -mindepth 1 -maxdepth 1 -mtime +1
# 查找并备份 目录(path) 下所有 修改时间大于2天 的文件
find 目录(path) -mindepth 1 -maxdepth 1 -mtime +1 -exec cp -rp {} /data/bak \;
# 查找并删除 目录(path) 下所有 修改时间大于2天 的文件
find 目录(path) -mindepth 1 -maxdepth 1 -mtime +1 -exec rm -rf {} \;
# find 目录(path) -mindepth 1 -maxdepth 1 -mtime +1 | xargs rm -rf