之前在写一个文件处理脚本的时候,需要查找在某个具体时间段内生成的批量文件,第一时间想到的是"find -mtime",但是这种查找的时间单位是天,怎么精确到分钟呢?或者说按照时间戳去查找?这就需要使用"-newermt"
1."-newermt"参数
find /dir1 -type f -newermt '2018-5-26 21:00' ! -newermt '2018-5-26 22:00' -exec cp {} /dir2 \;
#将/dir1目录下2018-5-26 21:00到2018-5-26 22:00时间段内修改或生成的文件拷贝到/dir2目录下
该参数中的m其实就表示mtime,t表示绝对时间,那同样还存在:-newerat、-newerct
注意:
在使用过程中发现,可能出现这样的错误提示 find: I cannot figure out how to interpret \'2018-05-26' as a date or time
出现这样的问题,一般是因为系统版本低或者在脚本中使用缺少执行环境造成的,可以将单条命令调整为:
cmd="find /dir1 -type f -newermt '2018-5-26 21:00' ! -newermt '2018-5-26 22:00' -exec cp {} /dir2 \;"
echo $cmd | sh
2."-atime"、"-ctime"、"-mtime"参数
回忆一下这三个参数的使用方法:
-atime:访问时间,文件被读取或执行的时间。
-ctime:属性改变时间,文件的inode被修改的时间
-mtime:内容修改时间
参数后面会跟上具体的数字:
-1:24小时之内操作过的
1:24小时之外,48小时之内操作过的
+1:48小时之外操作过的
#这三种时间没有交集
转载于:https://blog.51cto.com/fengjicheng/2120676