如何检测.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
文件,那么它们将不能直接执行。要搜索/删除.class
24 小时前访问的文件:
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`