Datei kopieren mit Datum im Namen

Dieses Thema im Forum "Mac OS X - Unix & Terminal" wurde erstellt von Meilenstein, 29.05.2006.

  1. Meilenstein

    Meilenstein Thread Starter MacUser Mitglied

    Beiträge:
    380
    Zustimmungen:
    11
    MacUser seit:
    15.01.2005
    Ich schreib derzeit eine Arbeit und würde gerne jeden morgen ein Backup meiner Arbeit machen.

    Jetzt dachte ich mir ich lege einen Daily Cronjob an der zB um 8:10 Uhr in der früh ausgeführt wird da sich mein iBook um 8 Uhr automatisch einschaltet.

    Das mit dem Cronjob bekomme ich vermutlich auch so hin, wenn man sich einliest in das Programm aber jetzt das eigentliche Problem.

    Ich hätte gerne dass die Datei arbeit.swx in den Ordner sicherungskopien kopiert wird und dort zB 06-05-29_arbeit.swx heisst.

    Wie kann ich dies realisieren und wäre es auch möglich das Datum des Vortages rein der Richtigkeit halber zu verwenden?


    Nachtrag:
    ok das aktuelle datum bekomm ich recht leicht rein mit
    cp arbeit.sxw _sicherheitskopien/`date +%y_%m_%d`_arbeit.sxw

    Aber wie kann ich das Datum um 1 Tag zurücksetzen?
     
    Zuletzt bearbeitet: 29.05.2006
  2. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Ansatz (getestet in zsh):
    Code:
    gestern=`date +%d`
    gestern=$((gestern-1))
    datum=`date +%y_%m_`${gestern}
    cp arbeit.sxw _sicherheitskopien/${datum}_arbeit.sxw
    Man sieht recht schnell, dass dies jeweils am Monatsersten nicht richtig funktioniert.
    Wenn man das auch noch richten will, muss man für diesen Fall einige Bedingungen einbauen, die den Tag des vorhergehenden Monats ermitteln.

    HTH
     
  3. IceHouse

    IceHouse MacUser Mitglied

    Beiträge:
    686
    Zustimmungen:
    22
    MacUser seit:
    03.06.2002
    Code:
    IceHouse@unixismad:~> date --version
    date (GNU coreutils) 5.3.0
    Geschrieben von David MacKenzie.
    
    Copyright (C) 2005 Free Software Foundation, Inc.
    Dies ist freie Software; die Kopierbedingungen stehen in den Quelltexten. Es
    gibt keine Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE ZWECKE.
    IceHouse@unixismad:~>
    IceHouse@unixismad:~>
    IceHouse@unixismad:~> date --date=yesterday
    Mo Mai 29 09:53:57 CEST 2006
    
    Gruss von IceHouse
     
  4. Meilenstein

    Meilenstein Thread Starter MacUser Mitglied

    Beiträge:
    380
    Zustimmungen:
    11
    MacUser seit:
    15.01.2005
    Die Idee mit dem date=yesterday sieht recht komfortabel aus...

    Leider gibt es bei mir den Befehl nicht... wie kann ich das Programm date denn aktualsieren auf eine neuere Version die Du zu haben scheinst?
     
  5. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Das ist eine GNU Software, die Du ggf. nachinstallieren (nicht aktualisieren) müsstest.

    Ich persönlich würde das nicht machen u.a. weil GNU Software nicht der SUSv3 entspricht und Skripte etc. dadurch schwer portierbar sind.
    Deine Anforderung ist mit ein paar Zeilen Code leicht zu lösen.
     
  6. IceHouse

    IceHouse MacUser Mitglied

    Beiträge:
    686
    Zustimmungen:
    22
    MacUser seit:
    03.06.2002
    http://darwinports.opendarwin.org/ports/?by=name&substr=coreutils

    Gruss von IceHouse
     
  7. IceHouse

    IceHouse MacUser Mitglied

    Beiträge:
    686
    Zustimmungen:
    22
    MacUser seit:
    03.06.2002
    Der OP sagte nichts von Portierbarkeit. Ich gehe also davon aus, das er es zum privaten Gebrauch benutzen moechte. Weiterhin wollte ich nur einen zweiten Weg aufzeigen. Weiteren Code braucht er nicht, er braucht nur den String:

    Code:
    IceHouse@unixismad:~> date -d -1day +%G-%m-%d
    2006-05-29
    zu verwenden.

    Gruss von IceHouse
     
  8. Meilenstein

    Meilenstein Thread Starter MacUser Mitglied

    Beiträge:
    380
    Zustimmungen:
    11
    MacUser seit:
    15.01.2005
    hehe danke für die Mühe die ihr euch macht.

    Ist in der Tat für privaten Gebrauch bestimmt, Darwin Ports ist aber für mich derzeit nicht wirklich eine Lösung, hatte mich da schon einmal dran versucht aber bin bei der Installation gescheitert... werd mal kucken obs bei Fink auch was ähnliches gibt, weil soweit ich mich erinnere hab ich das mal ausprobiert und lief eigentlich recht gut.


    Wäre aber dennoch wohl eine Aktualsierung, weil der Befehl "date" ja bei mir vorhanden ist aber wohl in einer sehr alten Form


    Notfalls bleib ich halt beim aktuellen Datum, ist ja nicht weiter schlimm, will eben nur jeden Tag als Version verfügbar haben um nachzuvollziehen was ich wann geschrieben bzw. geändert habe
     
  9. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Schon klar. Darum sagte ich auch "Ich persönlich ...", als ich diesen Aspekt in die Diskussion einbrachte.

    Ich wollte damit auch nicht Deinen richtigen Vorschlag herabsetzen, sondern nur mitteilen, dass die Sache mit Bordmitteln ebenfalls leicht zu lösen ist (wenn auch geringfügig aufwändiger). Und natürlich gibt es auch noch weitere Lösungsmöglichkeiten.
     
  10. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Um die GNU coreutils zu installieren benötigt man weder darwinports noch Fink. Das kann man auch einfach "zu Fuß" erledigen.
    Nein, in einer Form die der SUSv3 und der Norm "IEEE Std 1003.2" (auch bekannt als POSIX.2) enstpricht. Die GNU Programme haben eine teilweise erweiterten/veränderten Funktionsumfang, für den man den Preis einer erschwerten Portierbarkeit bezahlt.

    Das kann man ganz leidenschaftslos so feststellen. Letztendlich ist es eine Frage der persönlichen Anforderungen, wofür man sich entscheidet. Mir persönlich kommt es etwas überzogen vor, Fink oder dp zu installieren, nur um das Datum von gestern auszugeben :D.
     
Die Seite wird geladen...

Diese Seite empfehlen