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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下,如何将最后修改时间在某个时间之前的文件删除掉?相关的知识,希望对你有一定的参考价值。

如何将一个目录中的子目录或者文件按照最后一次修改时间来删除掉?比如最后修改时间在2009年1月1号之前的...
不能按照创建时间来删....必须要根据最后修改时间或者是最后访问时间来删除....

使用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

参考技术A 对比删除,觉得打包且删除原文件,更为合理。
假设目录名:/usr/log/
假设:将90天前的文件及文件夹都打包且删除。

cd /usr/log

find . -mtime +90 | xargs tar --remove-files -zcvf log.tar.gz
参考技术B 1. touch -t 01010000 time_file
2. find . ! -newer time_file | xargs rm

创建一个标准文件 time_file
然后删除不新于(! -newer) 这个文件的所有文件(也就是比这个文件创建时间早的文件)
参考技术C noneki网友回答得不错!

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

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

提示:如果是要根据修改时间,则把newer改成cnewer,如果是根据访问时间,则把newer改为anewer本回答被提问者采纳
参考技术D #man find

如何获取文件最后在 Python 中修改的时间? [复制]

【中文标题】如何获取文件最后在 Python 中修改的时间? [复制]【英文标题】:How do I get the time a file was last modified in Python? [duplicate] 【发布时间】:2010-09-27 08:54:53 【问题描述】:

假设文件存在(使用os.path.exists(filename) 首先确保它存在),我如何显示文件最后修改的时间?如果这有什么不同的话,这是在 Linux 上。

【问题讨论】:

【参考方案1】:

os.stat()

import os
filename = "/etc/fstab"
statbuf = os.stat(filename)
print("Modification time: ".format(statbuf.st_mtime))

Linux 不记录文件的创建时间 (for most fileystems)。

【讨论】:

谢谢。 Linux 似乎不存储文件创建时间。似乎我应该知道这一点。 :)【参考方案2】:
>>> import os
>>> f = os.path.getmtime('test1.jpg')
>>> f
1223995325.0

从(纪元)开始

【讨论】:

谢谢,这很有帮助。这似乎是解决我的具体问题的更直接的方法,但 os.stat 解决方案提供了更多信息。 我不知道有一个明确的功能。我猜是生活和学习。 可能是更便携的解决方案 感谢您的解决方案 这是针对特定问题的最佳答案。更通用的统计信息提供更多信息,并且在需要额外信息时更可取,但当不需要时 - 就像在此处询问的场景中一样 - 这些无关信息和额外层只是不必要的负担。【参考方案3】:

python 3.4+ 的新功能(请参阅:pathlib)

import pathlib

path = Path('some/path/to/file.ext')
last_modified = path.stat().st_mtime

【讨论】:

当您有绝对路径并且不确定操作系统时,pathlib 似乎对于获取文件很有用。但是,如果您可以假设有问题的文件与您的脚本位于同一目录中,那么其他方法似乎更容易。 pathlib 处理相对路径。 在这种情况下,我看不出pathlib.Path("file.ext").stat()os.stat("file.ext") 之间的区别。 pathlib 旨在提供一种面向对象的方法来获取 os 和 stat 中的许多功能。它不是为了取代,而是为了生活。此外,当您需要传递路径并且想要访问文件信息或直接打开文件时,它会变得更加方便。 2021 年的正确答案!

以上是关于Linux下,如何将最后修改时间在某个时间之前的文件删除掉?的主要内容,如果未能解决你的问题,请参考以下文章

linux下如何查找并删除/home目录下近两天生成的文件

Linux 递归修改后缀名

linux文件夹内文件复制,如何排除某个文件

linux如何修改特定用户对某个文件的权限?

Linux内核性能优化ulimit(nprocnofile)

Linux内核性能优化ulimit(nprocnofile)