मूल रूप से इस तिथियों की सीमा में फ़ाइलें खोजने द्वारा पूरा किया है के रूप में जवाब में से एक from here और $ का उपयोग कर() डाल दिया। ..
मैंने आज से दिए गए टाइमस्टैंप के दिनों की गणना करने के लिए पेर्ल का उपयोग किया क्योंकि जीएनयू तिथि मेरे सिस्टम में उपलब्ध नहीं है, इसलिए -d
कोई विकल्प नहीं है। कोड YYYYDDMM प्रारूप में दिनांक स्वीकार करता है। नीचे देखें:
#!/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]);
** नोट: मैं पर्ल में कोई विशेषज्ञ नहीं हूं और यह कोड का पहला भाग है जिसे मैं संशोधित/लिखता हूं। ऐसा कहकर, मुझे यकीन है कि उपरोक्त को पर्ल
में नीचे पूरा करने के बेहतर तरीके हैं, तो नीचे की कॉर्न स्क्रिप्ट को मेरी ज़रूरतों को पूरा करने के लिए।
#!/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
मैं सभी फाइलों +$daysFromToday
से अधिक उम्र की खोज कर रहा हूँ, तो -$daysOld
पुनरावर्ती? वर्तमान निर्देशिका? – ormaaj
हां, रिकर्सिवली .. सभी फाइलें '/ path/to/dir ' – esausilva
के तहत फाइलें 2 दिनों से अधिक पुरानी खोजने के लिए कमांड को' ढूंढें/पथ/से/dir -mtime +2 -type f -ls' होना चाहिए?मैंने यह कोशिश की और मेरी प्रणाली (xubuntu, bash) '-2'' विकल्प को '-mtime' के लिए 2 दिनों से अधिक नई फाइलें मिलेंगी। – jhonkola