环境:linux
问题:某个目录下有很多文件,今天的文件很少,需要删除不是今天的文件
1、查找今天修改过的文件
cd /data #进入到需要删除的目录 find . -ctime -1|awk -F / '{print $2}' #找到今天修改过的文件
2、将今天的文件排除的拼接
for i in `find . -ctime -1|awk -F / '{print $2}'`;do echo -n " --ignore="$i" ";done # echo -n 将所有的输出在一行展示
3、将结果用ls 和删除命令拼接出来(上面是解析,可以直接执行下面命令生成脚本)
echo -n "ls" && for i in `find . -ctime -1|awk -F / '{print $2}'`;do echo -n " --ignore="$i" ";done && echo -n "|xargs rm -rvf" #结果如下
ls --ignore="today.txt" |xargs rm -rvf
4、在文件目录执行生成的命令即可删除不是今天的文件
5、简单方法-直接删除一天前的文件
1.当前时间24小时—当前时间(昨天-今天) #find . -mtime 0 2.当前时间48小时前–当前时间24小时前(前天-昨天) #find . -mtime 1 3.当前时间48小时前(2天前) #find . -mtime +1 4.当前时间24小时–当前时间(昨天-今天) #find . -mtime -1 find . -mtime 1|xargs rm -rvf find . -mtime 1 -exec rm {} ;