linux删除某个目录不是今天的所有文件

环境: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 {} \;

  

  

 

posted @ 2020-07-31 16:05  苍茫宇宙  阅读(706)  评论(0编辑  收藏  举报