检测扩展文件一段时间内未执行

检测扩展文件一段时间内未执行

如何检测.class工作区中一段时间​​内未执行的文件并将其删除?

答案1

您可以通过其而不是修改时间来查找文件上次执行的最接近atime时间 - 执行不会修改文件。但是,无法判断该文件是否因其他原因被访问。但是,如果文件在特定时间范围内没有被访问,那么它就不能被执行。

要列出超过 24 小时未访问的可执行文件,您可以执行以下操作:

find workspace_dir -type f -perms /111 -atime +1

要删除它们(确保您只删除您想要先删除的内容):

find workspace_dir -type f -perms /111 -atime +1 -exec rm {} +

请注意,对于 SSD,通常会选择安装来noatime减少磁盘写入次数并延长使用寿命。如果使用该选项安装文件系统noatime,则这将不起作用。

更新

如果这些是 Java.class文件,那么它们将不能直接执行。要搜索/删除.class24 小时前访问的文件:

find workspace_dir -type f -name '*.class' -atime +1
find workspace_dir -type f -name '*.class' -atime +1 -exec rm {} +

答案2

当程序执行时,它是阿泰姆是被修改的,而不是ctime或mtime。

注意:stat <filename>如果您不相信我,请使用。

为了检查在 2 个定义的日期之间访问了哪些文件,请使用-较新查找中的选项

例子 :

find ./ -name "*.class" -newerat "2014-03-01" ! -newerat "2014-04-02

将显示任何以 .class 结尾且在 2014 年 3 月 1 日至 2014 年 4 月 2 日期间访问的文件。

答案3

您可以使用以下命令来确定最近修改了哪些文件。

ls -halt *.class

在上面的顺序中,输出中的第一个文件意味着它最近被编辑过。

如果你想以相反的顺序输出,

ls -haltr *.class

在上面的输出中,输出中的第一个文件意味着它很早就被编辑过。

一旦你确定了确定时期,您可以rm对这些文件执行 a 操作。

现在假设您的确定期限为 1 天,您可以运行以下命令。

find /path/to/files* -atime +1 -exec rm {} \;

删除文件的另一种方法是,

rm -f `find *.class -type f -atime +1`

最好指定文件的完整路径。

可以肯定的是,在运行命令之前,我将运行以下命令来找出哪些文件在过去 1 天内没有被修改。

echo `find *.class -type f -atime +1`

相关内容