Fondamentalmente questo è compiuta la ricerca di file in un intervallo di date. ..
Ho usato perl per calcolare i giorni da oggi al dato data poiché la data GNU non è disponibile nel mio sistema, quindi -d
non è un'opzione. Codice sottostante accetta data in formato AAAAAAMM. Vedi sotto:
#!/usr/bin/perl
use Time::Local;
my($day, $month, $year) = (localtime)[3,4,5];
$month = sprintf '%02d', $month+1;
$day = sprintf '%02d', $day;
my($currentYear, $currentDM) = ($year+1900, "$day$month");
my $todaysDate = "$currentYear$currentDM";
#print $todaysDate;
sub to_epoch {
my ($t) = @_;
my ($y, $d, $m) = ($t =~ /(\d{4})(\d{2})(\d{2})/);
return timelocal(0, 0, 0, $d+0, $m-1, $y-1900);
}
sub diff_days {
my ($t1, $t2) = @_;
return (abs(to_epoch($t2) - to_epoch($t1)))/86400;
}
print diff_days($todaysDate, $ARGV[0]);
** Nota: Non sono un esperto in Perl e questo è il primo pezzo di codice modifico/scrittura. Detto questo, sono sicuro che ci sono modi migliori per realizzare quanto sopra in Perl
Quindi lo script di sotto di Korn per eseguire ciò che mi serviva.
#!/bin/ksh
daysFromToday=$(dateCalc.pl 20110111)
let daysOld=$daysFromToday+31
echo $daysFromToday "\t" $daysOld
find /path/to/dir/ -mtime +$daysFromToday -mtime -$daysOld -type f -ls
sto trovando tutti i file più vecchi di +$daysFromToday
, quindi restringendo la ricerca a giorni più recenti di -$daysOld
in modo ricorsivo? directory corrente? – ormaaj
sì, in modo ricorsivo..tutti i file in '/ percorso/in/dir' – esausilva
Il comando per trovare più vecchio di 2 giorni dovrebbe essere 'find/percorso/a/dir -mtime +2 -type f -ls'?Ho provato questo e sul mio sistema (xubuntu, bash) l'opzione '-2' per' -mtime' trovava i file più nuovi di 2 giorni. – jhonkola