Daten die älter sind verschieben

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von deamon89, 27.08.2008.

  1. #1 deamon89, 27.08.2008
    deamon89

    deamon89 Tux in $Ausbildung

    Dabei seit:
    25.12.2007
    Beiträge:
    41
    Zustimmungen:
    0
    hallo unixboard user,
    ich hab mal ein problem mit shell skripten. Und zwar sollte ich ein kleines
    skript schreiben dass alle Daten in einem Ordner die älter als 14 Tage sind
    verschiebt. So weit so gut dass hier war jetzt erstmal meine lösung.
    find /pfad -atime +14 -exec mv `{}´ /pfad2 \; hat auch funktioniert nur dann hab ich festgestellt dass ich die Informationen über das alter der Daten nicht auf Dateiebene habe sondern nur in form des dateinamens also z. B.
    string-200805.01.dump.gz. Die frage ist jetzt was muss ich tun damit ich mit dem datum (Dateiname) im skript weiter arbeiten kann hab schon mit basename versucht das ende (dump.gz) abzuschneiden. Klappt aber nicht so ganz.
    Danke schon mal im Vorraus
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. karru

    karru OSX'ler

    Dabei seit:
    02.05.2006
    Beiträge:
    338
    Zustimmungen:
    0
    Dateinamen per RegEx zerschneiden und dann mit Hilfe der Shell die Datumsen vergleichen.
    Das Zerschneiden würde ich beispielsweise mit `sed` oder `awk` vornehmen

    Pro Dateiname
    Zerschneide
    Vergleiche Älter als 14 Tage
    Verschiebe
    /Vergleiche
    /Pro

    Easy wa? ;)
     
  4. #3 deamon89, 27.08.2008
    deamon89

    deamon89 Tux in $Ausbildung

    Dabei seit:
    25.12.2007
    Beiträge:
    41
    Zustimmungen:
    0
    jo erstmal vielen danke für die schnelle antwort,
    leider kenn ich mich net sehr gut aus mit awk (eigentlich überhaupt net).
    könnte ich des dann so realisien im skript
    ls | awk {befehle} so dass das skript jedes mal die dateinamen wieder zuschneidet?
     
  5. framp

    framp Mitglied

    Dabei seit:
    13.07.2006
    Beiträge:
    27
    Zustimmungen:
    0
    Mit
    Code:
    echo 'string-200805.01.dump.gz' | perl -lne '/(\w+)-(\w+)\.(\w+)/; print "$1 $2 $3";'
    bekommst Du die ersten 3 Teile des Namens:
     
  6. #5 Wolfgang, 27.08.2008
    Zuletzt bearbeitet: 27.08.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Zunächst auch hier wieder die Frage aller Fragen...

    Mit GNU date einen Stichtag erstellen.
    Wenn dein Dateiname sinnigerweise mit JahrMonatWochentag aufgebaut ist, lässt sich das sogar gut vergleichen.

    Code:
    STICHTAG=$(date -d"14 days ago" +"%Y%m%d")
    FILE="string-200805.01.dump.gz";
    ALTER=${FILE//[![:digit:]]/};
    if [ "$ALTER" -lt "$STICHTAG" ]; 
       then
       echo "$FILE to old"
    ...
    fi
    
    Gilt für die Bash!
    Sonst halt mit
    Code:
    ALTER=$(echo "string-200805.01.dump.gz"|tr -d -c "[:digit:]")
    
    Gruß Wolfgang
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 deamon89, 28.08.2008
    Zuletzt bearbeitet: 29.08.2008
    deamon89

    deamon89 Tux in $Ausbildung

    Dabei seit:
    25.12.2007
    Beiträge:
    41
    Zustimmungen:
    0
    Jawohl des hab ich jetzt voll vergessen, ich benutz ein suse linux, mit einer bash.
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Also erstmal danke für die Tipps hat gut funktioniert hier mal meine Lösung,
    bei interesse:

    Code:
    #!/bin/bash
    i=0
    ALTER=unset
    STICHTAG=$(date -d"14 days ago" +"%Y%m%d")
    
    find /home/test/backup -name '*dump.gz' -print > log.dump
    
    while read value
    do
            echo $value
            ALTER=$(echo "$value"|tr -d -c "[:digit:]")
    
            if [ $ALTER -lt $STICHTAG ]
            then
                    echo "Kopiere daten nach /home/test/backup2"
                    mv $value /home/test/backup2
    
            else
                    echo "Archiviere Daten weiter in /home/test/backup"
            fi
    done < log.dump
    
     
  9. #7 Wolfgang, 28.08.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Würde es dir etwas ausmachen, künftig Programmcode in code-Tags zu fassen?
    Das macht das Leben leichter. ;)

    BTW hast du die Var STICHTAG nicht gesetzt.
    Und log.dump kannst du dir sparen, wenn die Ausgabe von find via Pipe gleich in die while read geschoben wird.

    Gruß Wolfgang
     
Thema: Daten die älter sind verschieben
Besucher kamen mit folgenden Suchen
  1. linux dateien verschieben älter las

Die Seite wird geladen...

Daten die älter sind verschieben - Ähnliche Themen

  1. Python Softwareentwickler (Hintergrundentwicklung und Datenanalyse)

    Python Softwareentwickler (Hintergrundentwicklung und Datenanalyse): Stelle : Software-Entwickler Anzahl : 3 Standort : Manila(Die Philippinen) Dezhong Investment LTD. Unser internationales...
  2. Neue Vision von KDE: Datenschutz, Freiheit, Privatsphäre

    Neue Vision von KDE: Datenschutz, Freiheit, Privatsphäre: Das KDE-Projekt hat sich eine neue Leitlinie gesetzt. Schon immer war es das Ziel des Projektes, mit seiner Arbeit die Welt ein Stückchen besser...
  3. Debian-Projektleiterwahl mit nur einem Kandidaten

    Debian-Projektleiterwahl mit nur einem Kandidaten: Bei der anstehenden jährlichen Debian-Projektleiterwahl tritt nur ein Kandidat an, der Franzose Mehdi Dogguy. Der amtierende Projektleiter Neil...
  4. Deutsche Bahn öffnet Fahrplandaten

    Deutsche Bahn öffnet Fahrplandaten: Über ein API stellt die Deutsche Bahn die aktuellen Fahrplandaten unter einer Creative-Commons-Lizenz allen Interessenten zur Nutzung bereit....
  5. Samba Datentransfer bricht ab

    Samba Datentransfer bricht ab: Hallo zusammen, ich suche seit 2 Tagen im Internet nach einer Lösung, aber ich finde einfach keine brauchbare. Folgendes Szenario: Ich vor einem...