Linux下,如何将最后修改时间在某个时间之前的文件删除掉?
如何将一个目录中的子目录或者文件按照最后一次修改时间来删除掉?比如最后修改时间在2009年1月1号之前的...不能按照创建时间来删....必须要根据最后修改时间或者是最后...
如何将一个目录中的子目录或者文件按照最后一次修改时间来删除掉?比如最后修改时间在2009年1月1号之前的...
不能按照创建时间来删....必须要根据最后修改时间或者是最后访问时间来删除.... 展开
不能按照创建时间来删....必须要根据最后修改时间或者是最后访问时间来删除.... 展开
5个回答
展开全部
使用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
展开全部
对比删除,觉得打包且删除原文件,更为合理。
假设目录名:/usr/log/
假设:将90天前的文件及文件夹都打包且删除。
cd /usr/log
find . -mtime +90 | xargs tar --remove-files -zcvf log.tar.gz
假设目录名:/usr/log/
假设:将90天前的文件及文件夹都打包且删除。
cd /usr/log
find . -mtime +90 | xargs tar --remove-files -zcvf log.tar.gz
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1. touch -t 01010000 time_file
2. find . ! -newer time_file | xargs rm
创建一个标准文件 time_file
然后删除不新于(! -newer) 这个文件的所有文件(也就是比这个文件创建时间早的文件)
2. find . ! -newer time_file | xargs rm
创建一个标准文件 time_file
然后删除不新于(! -newer) 这个文件的所有文件(也就是比这个文件创建时间早的文件)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
noneki网友回答得不错!
第一步touch是要建立一个最后修改时间为“ 1月1号,0分0秒的”的比对文件time_file,
第二步, 用find查找,比time_file “不”新的所有文件,然后删除。
提示:如果是要根据修改时间,则把newer改成cnewer,如果是根据访问时间,则把newer改为anewer
第一步touch是要建立一个最后修改时间为“ 1月1号,0分0秒的”的比对文件time_file,
第二步, 用find查找,比time_file “不”新的所有文件,然后删除。
提示:如果是要根据修改时间,则把newer改成cnewer,如果是根据访问时间,则把newer改为anewer
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询