查找某个时间点范围内改动的文件

常常因为磁盘空间不足的原因,须要删除旧文件,因此希望有一个函数,可以查找到某个时间点之前的文件,并删除之。

用newLISP来实现的话,须要相似这种功能:

(define (location-file-based-on-modified-time dir-path from-seconds to-seconds file-op)
  (unless (directory? dir-path)
    (throw-error (string dir-path " folder does not exist"))
    )
  (set ‘dir-path (make-sure-folder-path-end-of-slash dir-path))
  (recursive-access-dir dir-path file-op (list from-seconds to-seconds)))

调用代码:

;; @[from-seconds, to-seconds)
(define (show-file file-path ext-context)
  (set ‘m-time ((file-info file-path) 6))
  (set ‘from (ext-context 0))
  (set ‘to (ext-context 1))

  (unless (and (>= m-time from) (< m-time to))
    (if (regex ".txt$" file-path)
	(begin
	 (println "---begin---")
	 (println file-path)
	 (println (string "modified time: " (date m-time)))
	 (println (string "from time: " (date from)))
	 (println (string "to time: " (date to)))
	 (delete-file file-path)
	 (println (sys-error))
	 (println "---end---")))
    ))

(set ‘cur-time (date-value))
(set ‘five-hours-ago (- cur-time (* 3600 5)))
;;(println cur-time)
;;(println five-hours-ago)
(catch (FILE:location-file-based-on-modified-time "/tmp" five-hours-ago cur-time show-file) ‘result)
(if result
  (println result))

start-time指的是改动时间的開始, end-time指的是改动时间的结束,依照习惯,这是一个左闭右开区间: [start-time, end-time), 这两个时间都使用epoch表示。

假设找到,则返回true, 否则返回nil.

时间: 2024-08-01 08:44:50

查找某个时间点范围内改动的文件的相关文章

查找某个时间点范围内修改的文件

经常由于磁盘空间不足的原因,需要删除旧文件,因此希望有一个函数,能够查找到某个时间点之前的文件,并删除之. 用newLISP来实现的话,需要类似这样的功能: (FILE:locate-modified-file file-path start-time end-time) start-time指的是修改时间的开始, end-time指的是修改时间的结束,按照习惯,这是一个左闭右开区间: [start-time, end-time), 这两个时间都使用epoch表示. 如果找到,则返回true,

find 查找指定时间 经典实例

2011/09/08 12:00 时间开始找一天內的,会列出 2011/09/07 12:00 ~ 2011/09/08 12:00 时间內的文件3天前被改动过的文件 (前第三天以前 → 2011/09/05 12:00 以前的文件) (> 72 小时)find /var/log/ -mtime +3 -type f -print 3天內被改动过的文件 (2011/09/05 12:00 ~ 2011/09/08 12:00 內的文件) (0 ~ 72 小时內)find /var/log/ -m

Android判断当前系统时间是否在指定时间的范围内(免消息打扰)

/** * 判断当前系统时间是否在指定时间的范围内 * * @param beginHour * 开始小时,例如22 * @param beginMin * 开始小时的分钟数,例如30 * @param endHour * 结束小时,例如 8 * @param endMin * 结束小时的分钟数,例如0 * @return true表示在范围内,否则false */ public static boolean isCurrentInTimeScope(int beginHour, int beg

Linux查找多个类似但是不同名的文件并且重命名

这个题目据说是百度一面的面试题,Linux题:查找以core.1,core.2....形式命名的文件,然后将这些文件名改成bak.core.1,bak.core.2,...... 首先应该找到这些文件,使用 find . -name "core.[0-9]" -print   ,可以找到: find的使用方法: 1.命令格式: find pathname -options [-print -exec -ok ...] 2.命令功能: 用于在文件树种查找文件,并作出相应的处理 3.命令参

fatal error C1010: 在查找预编译头时遇到意外的文件结尾

错误描述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加"#include "stdafx.h""? 错误分析: 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束.没有找到预编译指示信息的头文件"stdafx.h". (因为工程中的每个cpp文件属性默认都是使用预编译头(/YU)的,但是添加的第三方文件并没有 #inc

教你Mac OS系统四种改动Hosts文件的方法

使用Mac OS X系统的用户.在某些时候可能遇到了须要改动系统Hosts文件的情况,那么Mac OS系统怎样改动Hosts文件呢?和Windows系统有何差别呢?我们知道事实上改动Hosts文件仅仅须要在硬盘中找到该文件,再编辑改动就OK了.可是非常多童鞋们发现仅仅要编辑 Hosts 文件就出现"你不是文件 hosts 的全部者,因此没有权限写到该文件"的提示,要解决这个权限问题又比較麻烦,对于刚刚使用 Mac 的用户来说并不easy整明确. 因此.我们在这里搜集和整理了下面几个方法

fatal error C1010: 在查找预编译头时遇到意外的文件结尾 (转)

错误描述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加“#include "stdafx.h"”? 错误分析: 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束.没有找到预编译指示信息的头文件"stdafx.h". (因为工程中的每个cpp文件属性默认都是使用预编译头(/YU)的,但是添加的第三方文件并没有 #include "

【Java】利用文件输入输出流完成把一个文件夹内的所有文件拷贝的另一的文件夹的操作

一.基本目标 使用Java完成如下的操作: 把一个文件夹内的所有文件拷贝的另一的文件夹,例如,在F盘中有a与b两个文件夹: f:/a里面有一堆文件,运行Java程序之后就会全部复制到f:/b,并且完成重命名,在所有文件之前加rename_的前缀,如果里面有文件夹,则文件夹不重命名,里面的文件进行重命名,同样在所有文件之前加rename_的前缀: 二.制作过程 1.首先主函数非常简单,就是调用了上面FileTest类中的copyFolder函数 public class FileCopy { pu

Eclipse spket插件 内置js文件

这一篇将怎么在spket内置js文件,而不用用户自己去添加. 1. 在开发的Eclipse的 运行配置将下面几个插件勾选上. 2. 在org.eclipse.ui.startup拓展里执行(只需执行一次): JSPlugin.getDefault().getPreferenceStore().setValue("js.profile", "BingoTouch"); PS:记得引入com.spket.js的包 3. 生成profiles.xml 这个profiles