我需要查找最近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. 但只有最近30天
- 3. 查找最近更改的文件
- 4. 查找最近修改的文件和操縱輸出
- 5. MongoDB的最近30天的數據
- 6. 保留最近30天的nginx日誌
- 7. 提取最近30天內的記錄
- 8. SAS:CAR最近30天的平均值
- 9. 最近修改的文件夾
- 10. 未找到清單文件
- 11. 最近30天爲MYSQL創建視圖
- 12. 查找距今天最近的日期
- 13. 如何查詢最近30天內添加的產品(HSQLDB)
- 14. MySQL查詢最近30天的分類日期
- 15. Pouchdb-從過去30天查找文檔
- 16. Bash腳本查找過去24小時內最近修改的大文件
- 17. Shell命令查找昨天修改過的文件24小時
- 18. 內找到最近n天
- 19. 快速查找最近更改過的文件
- 20. 如何查找最近更改的行?
- 21. 查找最近的最後一天的日期
- 22. 查找文件的最後修改日期的特殊擴展
- 23. 我需要查找前30天的每日最大值
- 24. 查找adb shell中的最新修改文件
- 25. 在.txt文件中查找最新的修改表
- 26. 查找最近點
- 27. 查找接下來30天(javascript)
- 28. 在最近一小時內修改過的目錄中找到一個文件
- 29. 如何在目錄(python)目錄中找到最近修改過的文件夾?
- 30. 如何使用Ruby在目錄中找到最近修改的文件夾?
我試過了第一個選項。但是,因爲有成千上萬的文件,如果它是正確的,我不是100%確定的。 – user2636464
@ user2636464只需選擇一個並查看其版本樹,以查看是否有最近30天創建的版本son3 – VonC
頂部的cleartool find命令將用於元素創建日期,而不是版本時間戳記...我認爲有一種方法,讓我看看我能否創造出一些東西。我相信你可以使用find -version「created_since ...」給你一個有修改的元素列表,然後將它與VOB中所有元素的列表進行比較。 –