find命令
语法
find [搜索目录][选项][参数]
find命令的-mtime参数的含义
stat可以查看文件的atime、ctime、mtime
$ stat file
File: ‘file’
Size: 547 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 3677178 Links: 1
Access: (0775/-rwxrwxr-x) Uid: ( 1000/ hlvan) Gid: ( 1000/ hlvan)
Access: 2018-10-31 06:00:01.441443744 +0800
Modify: 2018-10-18 18:46:29.155807667 +0800
Change: 2018-10-19 08:09:44.104644918 +0800
find . –mtime n中的n指的是24*n, +n、-n、n分别表示:
+n:大于n
-n: 小于n
n:等于n
如果n为0就表示是24小时以内的和n为-1是一个效果,为1就表示是大于24小时小于48小时(没测试过临界点)
可以通过 man find 查找
find . –mtime n:
最后一次修改发生在距离当前时间n*24小时至(n+1)*24 小时
为0 24小时以内 为1 24小时到48小时之间 为2 48小时到72小时之间
find . –mtime +n:
最后一次修改发生在n+1天以前,距离当前时间为(n+1)*24小时或者更早
n 为0 就是等于或者超过24小时 为1 就是等于或者超过48小时
find . –mtime –n:
最后一次修改发生在n天以内,距离当前时间为n*24小时以内
n 为1 就是24小时以内 为2 就是48小时以内
使用touch可以改变atime、ctime、mtime
查找后去掉目录,只显示文件名
find $1 -mtime +4 -exec basename {} \;
shell脚本-保留目录下最新的几个文件,其他删除
#!/bin/bash
#保留文件数
ReservedNum=5
FileDir=/data/bak
date=$(date "+%Y%m%d-%H%M%S")
FileNum=$(ls -l $FileDir|grep ^- |wc -l)
while(( $FileNum > $ReservedNum))
do
OldFile=$(ls -rt $FileDir| head -1)
echo $date "Delete File:"$OldFile
rm -rf $FileDir/$OldFile
let "FileNum--"
done