我正在尝试做我认为在 Linux 下很简单的事情。我有一个运行各种测试程序的 bash 脚本,我想确定当前目录中的哪些文件是由测试程序创建的。所以我正在做这样的事情:
触摸时间戳文件 运行测试 查找 -newer 时间戳文件 -type f > 文件列表 rm -f 时间戳文件
原来 find -newer 的粒度很差,所以通常发生的情况是测试程序生成的一些文件显示为比时间戳文件更旧。所以我尝试了这个:
ls -tr1 | sed '1,/时间戳文件/d'
生成相同的列表。这通常有效,但并非总是如此。我仍然会遇到测试生成的文件显示为比时间戳文件更旧的情况。
谢谢!
PS我可以通过拍摄目录的两个快照来完成此操作,一个是在测试程序运行之前,一个是之后,然后比较它们。第二个列表中不在第一个列表中的任何文件都必须由测试程序创建(我不关心后台作业或其他用户写入目录)。但是这种方法不是我想要的,因为如果在运行测试之前没有删除输出文件(它们应该是,但在某些情况下可能不是),这种方法会说它不是由测试程序,因为它在运行测试程序之前就在目录中。