Linux下,如何将最后修改时间在某个时间之前的文件删除掉?

如何将一个目录中的子目录或者文件按照最后一次修改时间来删除掉?比如最后修改时间在2009年1月1号之前的...不能按照创建时间来删....必须要根据最后修改时间或者是最后... 如何将一个目录中的子目录或者文件按照最后一次修改时间来删除掉?比如最后修改时间在2009年1月1号之前的...
不能按照创建时间来删....必须要根据最后修改时间或者是最后访问时间来删除....
展开
 我来答
kaixingui2012
推荐于2016-03-03 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6410万
展开全部

使用find命令组合可完成此功能,步骤如下:

1、创建一个时间标签临时文件(如,创建一个1900年1月1日0时0分的文件)

touch -t 190001010000 rmfile.tmp

2、用find命令组合进行删除

find . -type f ! -newer rmfile.tmp -exec rm -f {} \;
-type f 只处理普通文件
-newer 修改时间比rmfile.tmp新的,即在rmfile.tmp之后的文件
! -newer 叹号 取反,即得到rmfile.tmp之前的文件
-exec 执行命令
rm -f 强制删除,不需要提示

3、删除标签临时文件

rm -f rmfile.tmp


将以上命令写到一个文件中,做成一个脚本程序,使用起来会更方便

#!/usr/bin/bash
read -p "input time [YYYYmmddHHMM]:" del_time
TMP_FILE=rmfile.tmp.$del_time
touch -t $del_time $TMP_FILE
if [ $? -ne 0 ]
then
    echo "create temp file: $TMP_FILE error"
    exit
fi
find . -type f ! -newer $TMP_FILE -exec rm -f {} \;
rm -f $TMP_FILE
76845731
2019-12-31 · 超过14用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:18.1万
展开全部
对比删除,觉得打包且删除原文件,更为合理。
假设目录名:/usr/log/
假设:将90天前的文件及文件夹都打包且删除。

cd /usr/log

find . -mtime +90 | xargs tar --remove-files -zcvf log.tar.gz
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
noneki
2009-11-04 · TA获得超过230个赞
知道答主
回答量:91
采纳率:0%
帮助的人:132万
展开全部
1. touch -t 01010000 time_file
2. find . ! -newer time_file | xargs rm

创建一个标准文件 time_file
然后删除不新于(! -newer) 这个文件的所有文件(也就是比这个文件创建时间早的文件)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tjuer
推荐于2016-03-09 · TA获得超过306个赞
知道答主
回答量:117
采纳率:100%
帮助的人:126万
展开全部
noneki网友回答得不错!

第一步touch是要建立一个最后修改时间为“ 1月1号,0分0秒的”的比对文件time_file,

第二步, 用find查找,比time_file “不”新的所有文件,然后删除。

提示:如果是要根据修改时间,则把newer改成cnewer,如果是根据访问时间,则把newer改为anewer
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jxwoy
2009-11-06
知道答主
回答量:23
采纳率:0%
帮助的人:0
展开全部
#man find
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式