Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
Google Site



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 10-07-2008
Registrert bruker
 

Bli Dato: Oct 2007
Innlegg: 38
Exclamation finne filer fra de siste 7 dagene

Hei Alle,

Jeg har en fil som inneholder oversikt over en annen katalog:


> cat list.dat
-rwxr-XR-x 1 test staff 10240 okt 02 06:53 test.txtdd
-rwxrwxrwx 1 test staff 0 okt 04 07:22 test.txx
-rwxrwxrwx 1 test staff 132 Sep 16 2007 test_tt.sh
-rwxrwxrwx 1 test staff 193 Aug19 2007 test_ttt.sh
-rwxrwxrwx 1 test staff 45 nov 21 2007 testfile.sh
-RW-r - r - 1 test ansatte 10.240 april 18 06:49 testtrar.tar
>


Jeg må trekke navnene på filene som er opprettet i de siste 7 dagene. Så utdataene for skriptet skal lilke nedenfor fra ovenfor fil:

-rwxr-XR-x 1 test staff 10240 okt 02 06:53 test.txtdd
-rwxrwxrwx 1 test staff 0 okt 04 07:22 test.txx

Finnes det noen måte å få til dette?

Takk,
D
Sponsede lenker
  #2 (permalink)  
Old 10-07-2008
otheus's Avatar
otheus otheus is offline Forum Advisor  
Moderator ala Mode
 

Bli Date: Feb 2007
Beliggenhet: Innsbruck, Østerrike
Innlegg: 1906
De "enkle" måten er å re-generere listen hjelp

Code:
find $DIR -mtime -7 -type f

The "hard" måte involverer å skape et sett med vanlige uttrykk basert på gjeldende dato / klokkeslett og rekkevidde. The "logwatch"-verktøyet har et perlmodule for å gjøre akkurat denne typen ting. Svare og jeg skal legge inn mer info.

Den virkelig harde måten, er å beregne tidsstempelet av filen i sekunder basert på ls produksjon og sammenligne det med gjeldende tid minus 7 dager sekunder (7 * 24 * 3600). Det kan ikke være så vanskelig som jeg tror, men det innebærer noen rett koding (i Perl eller awk) og sannsynligvis mye feilsøking.
  #3 (permalink)  
Old 10-07-2008
photon's Avatar
Registrert bruker
 

Bli Dato: juli 2002
Innlegg: 164
Jeg gjorde dette nylig i perl denne måten.


Code:
$days = 7;
$dir = "/opt/application";
opendir(BIN, $dir) or die "Can't open $dir: $!";
while(defined($file = readdir BIN) ){
    next if $file =~ /^\.\.?$/;  #skip . and ..
    if(int(-M $file) < $days){
        # do something
    }
}

Det eneste forskjellen er at du ville lese fra fil.
  #4 (permalink)  
Old 10-07-2008
Registrert bruker
 

Bli Dato: Oct 2007
Innlegg: 38
takk for det.

I cant bruke finne kommando som jeg dont ha tilgang til katalogen. Katalogen er åpnet av ftp. Jeg ftp til ekstern maskin og får liste fra katalogen til denne filen. Og fra denne filen, jeg trenger å filtrere ut filer eldre enn 7 dager. Så jeg tror eneste måten er å bruke filen.

I så fall tidsstempelet metoden kan være veien til venstre jeg gjette ...

Hi foton - Jeg har liten kunnskap om perl så jeg skrånende forstå hva scriptet gjør. Jeg tror det åpne katalog og tar hver fil og sjekke forholdene. Men kan det gjøres med innholdet i en fil?

Takk for hjelpen
D
  #5 (permalink)  
Old 10-07-2008
Registrert bruker
 

Bli Dato: Oct 2007
Innlegg: 38
eller bare kan jeg gjøre det under sjekk:
Jeg har tidsstempelet for en fil i en variabel

TS \u003d "29 sep 09:19"

Hvordan kan jeg finne ut om dette faller i siste 7 dager?
  #6 (permalink)  
Old 10-07-2008
photon's Avatar
Registrert bruker
 

Bli Dato: juli 2002
Innlegg: 164
Jeg ser ikke hvorfor ikke.


Code:
$days = 7;
open FILE, "/opt/application/file.txt";
while(my $line = <FILE>){
    if(int(-M $line) < $days){
        #do something
    }
}

  #7 (permalink)  
Old 10-07-2008
otheus's Avatar
otheus otheus is offline Forum Advisor  
Moderator ala Mode
 

Bli Date: Feb 2007
Beliggenhet: Innsbruck, Østerrike
Innlegg: 1906
Det kan være andre wazs, men her er hva jeg vil gjøre. Installer "logwatch". La oss si at det installeres i / usr / share / logwatch. Deretter foreta en liten perl-skript:


Code:
#!/usr/bin/perl
use lib "/usr/share/logwatch/lib";
use Logwatch ':dates';

$ENV{"LOGWATCH_DATE_RANGE"}="since -7 days";
my $SearchDate = TimeFilter('%b %d %H:%M');

while (<>) {
   print if m/\b$SearchDate\b/o;
}

Deretter må du gjøre perl <scriptname> <filnavn>

Du skal ha det du leter etter.
Sponsede lenker
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er Av


Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Hvordan finne en dato som er 7 dager tidligere da gitt dato ladtony Shell programmering og Skripting 17 04-09-2009 05:06
Finn filer eldre enn x dager og lage en konsolidert enkelt tar filen. Dawn Bosch Solaris 3 09-09-2008 06:45
opprette en CSV-fil for siste 7 dager dr46014 UNIX for Dummies Spørsmål og svar 12 08-26-2008 05:44
Finn filer eldre enn 20 dager og ikke bruke finne halo98 Shell programmering og Skripting 2 05-18-2006 03:19
Finn filer eldre enn 5 dager og fjerne TEM etter liste ypatel6871 UNIX for Dummies Spørsmål og svar 1 09-05-2005 12:00



Alle klokkeslett er GMT -4. Nå er klokken 05:40.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2010. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0