使用find命令查找指定时间或时间段之间的数据,涉及到参数mtime
命令时间线:
今天:2020-11-11
系统时间:2020-11-11 11:11:11
以今天为基准值,
---------------------------------
find /lt/logs/ -type f -name "*" -newermt '2020-11-08' ! -newermt '2020-11-10' | xargs ls -lt
代表查找11-08,11-09两天的数据并以ls -lt格式进行显示;
-type f:代表一般文件,
-type d:d代表目录(文件夹),
小技巧:
为了避免下一步删除出现失误,也为了避免在查找时没有找到文件而将当前您所在目录的文件列表输出,在执行这两条命令之前,您可以建一个空目录,在这个空白目录里面进行操作,这样,每次查找到或未查找到都能方便验证,结果显示比较直接。
---------------------------------
==查找指定日期之间的文件,并删除===
find /lt/logs/ -type f -name "*" -newermt '2020-11-08' ! -newermt '2020-11-10' -exec rm {} \;
代表查找11-08,11-09两天的数据并进行删除,没有删除确认框;
---------------------------------
备注:
| xargs ls -lt
xargs:代表将迁移查找出来的文件进行使用下一个命令【ls -lt】继续进行处理。
删除的解释:【来源于“百度知道https://zhidao.baidu.com/question/551356621810102292.html”】
问:find /lt/logs/ -name "*.pcap" -newermt '2020-11-08' ! -newermt '2020-11-10' -exec rm {} \;
答:
find /lt/logs/ -name "*.pcap" -newermt '2020-11-08' ! -newermt '2020-11-10' -exec rm {} \;意思从/lt/logs/当前目录查找以.pcap为文件后缀名的所有文件;
-exec 是表示查找后紧接着执行的命令,因为rm不接受管道输入,所以不能写成find /lt/logs/ -name "*.pcap" -newermt '2020-11-08' ! -newermt '2020-11-10' | rm的形式,
rm就是删除文件的意思;
{} 代表的是把find 到的结果传给-exec作为参数 ;
-exec 参数必须用分号;结尾,但是在shell中不懂分号;是什么鬼,所有要用转义符\加分号,所以就有了\;