2016-08-05 2 views
2

Мне нужно найти список файлов, которые не изменяются за последние 30 дней. Это означает, что в течение последних 30 дней не должно быть версии файла в любом филиале. возможно ли это в базовой четкости?найти список файлов, не измененных за последние 30 дней в ящике памяти

ответ

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 
+0

Я пробовал первый вариант. Но, поскольку есть тысячи файлов, я не уверен на 100%, если это правильно. – user2636464

+0

@ user2636464 просто выберите один и посмотрите его дерево версий, чтобы узнать, есть ли версии, созданные sonce, последние 30 дней. – VonC

+0

. Команда find cleartool наверху будет работать на дату создания элемента, а не на временные метки версии ... Я думаю есть способ, позвольте мне посмотреть, смогу ли я что-нибудь создать. Я считаю, что вы можете использовать find -version «created_since ...», чтобы дать вам список элементов с изменениями, а затем сопоставить их со списком всех элементов в VOB. –

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

Смежные вопросы