我需要查找最近30天未修改的文件列表。这意味着在过去30天内,任何分支下都不应有该文件的版本。这是可能的基础明确吗?查找最近30天未修改的文件清单
2
A
回答
1
尝试首先,从query_language和cleartool find
,语法
cleartool find <vobtag> -element "!{created_since(target-data-time)}" -print
如果不工作,你将不得不退却到:
- 列表与所有文件在过去30天内创建的版本
- 列出所有文件并提取不属于第一个列表的文件。
关于所述第一名单(从“How to determine the last time a VOB was modified”),使用cleartool find
:
cleartool find <vobtag> -element "{created_since(target-data-time)}" -print
or
cleartool find <vobtag> -version "{created_since(target-data-time)}" -print
该文件还提到了cleartool lshistory -minor -all .
,但不可靠,它使用的是可以在任何时候被废弃当地的元数据。
对于第二个清单:
cleartool find . -cview -ele -print
1
下面是一个简单的Perl脚本做你问什么。这有一个硬编码的日期字符串,以避免陷入Perl日期算法。它获取VOB中所有元素的列表,然后删除自该列表指定的日期以来修改版本的元素,最后输出未修改的元素。
#!/usr/bin/Perl -w
my %elem_hash;
my $datestring="01-jan-2014";
my $demarq= "-------------------------------------------------";
my $allelemtxt="-- All elements located in the current VOB --";
my $ver_hdr ="-- Versions modified since $datestring --";
my $nonmodtext="-- Elements not modified since $datestring --";
#
# Get all elements in the current VOB.
#
$cmdout=`cleartool find -all -print`;
@elemtext=split('\n',$cmdout);
#
# Add them to a hashmap, simply because it's easier to delete from this list type
#
foreach $elem (@elemtext)
{
# Quick and dirty way to remove the @@
$elem = substr($elem,0,length($elem)-2);
$elem_hash{$elem} = 1;
}
#
printf("\n%s\n%s\n%s\n",$demarq,$allelemtxt,$demarq);
foreach $elem2 (sort (keys (%elem_hash)))
{
printf("Element: %s\n",$elem2);
}
#
# Get VERSIONS modified since the specified date string
#
$cmdout=`cleartool find -all -version "created_since($datestring)" -print`;
@vertext=split('\n',$cmdout);
#
# strip the trailing version id's and then delete the resulting key from the hashmap.
#
printf("\n%s\n%s\n%s\n",$demarq,$ver_hdr,$demarq);
foreach $version (@vertext)
{
printf("Version: %s\n",$version);
$version=substr($version,0,length($version)-(length($version)- rindex($version,"@@")));
if (exists($elem_hash{$version}))
{
delete $elem_hash{$version};
}
}
printf("\n%s\n%s\n%s\n",$demarq,$nonmodtext,$demarq);
foreach $elem2 (sort (keys (%elem_hash)))
{
printf("Element: %s\n",$elem2);
}
+0
非常感谢 – user2636464
相关问题
- 1. 查找在Linux最近30分钟内修改过的文件
- 2. sqlite的得到的最近30天的清单,每天一行
- 3. 获取最近30天内在目录中修改的所有文件
- 4. 查找在Android上最近x天未访问的文件
- 5. 但只有最近30天
- 6. 查找最近更改的文件
- 7. 在Windows控制台上查找最近修改的文件
- 8. 查找最近修改的文件和操纵输出
- 9. 查找30天的旧文件
- 10. 查找最近7天当天的最后一个文档
- 11. MongoDB的最近30天的数据
- 12. 保留最近30天的nginx日志
- 13. SAS:CAR最近30天的平均值
- 14. 查询最近30天,但保留天数没有结果/值
- 15. 如何创建最近30天文件的焦油
- 16. 最近修改的文件夹
- 17. 最近30天为MYSQL创建视图
- 18. 未找到清单文件
- 19. 无法弄清楚如何只查询最近30天导致mysql
- 20. Git:显示最近未修改的文件
- 21. 使用Java以毫秒为单位将时间转换为今天,昨天,最近7天,最近30天
- 22. 查找距今天最近的日期
- 23. 如何检查是最近30天内的东西
- 24. MySQL查询最近30天的分类日期
- 25. 如何查询最近30天内添加的产品(HSQLDB)
- 26. 查询计算行的总和(最近30天)
- 27. Pouchdb-从过去30天查找文档
- 28. Bash脚本查找过去24小时内最近修改的大文件
- 29. 如何查找使用powershell在最近X天内添加/删除/修改的文件
- 30. 找到文件的长列表中的3个最近修改的文件
我试过了第一个选项。但是,因为有成千上万的文件,如果它是正确的,我不是100%确定的。 – user2636464
@ user2636464只需选择一个并查看其版本树,以查看是否有最近30天创建的版本son3 – VonC
顶部的cleartool find命令将用于元素创建日期,而不是版本时间戳记...我认为有一种方法,让我看看我能否创造出一些东西。我相信你可以使用find -version“created_since ...”给你一个有修改的元素列表,然后将它与VOB中所有元素的列表进行比较。 –