debitux Geschrieben 19. September 2002 Teilen Geschrieben 19. September 2002 Hi Leutz, wie kann ich in einem Shellskript Dateien ins aktuelle Datum (als Dateiname) umändern? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 19. September 2002 Teilen Geschrieben 19. September 2002 wie wärs mit dem Kommando 'touch' ? Beschreib bitte mal genauer, was du mit - "in Dateinamen umändern" meinst meinst du vielleicht sowas hier: ???? user@machine:~> datei=x; touch $datei; currenttimestamp=$(ls -l $datei | awk '{ print $8}'); mv $datei $currenttimestamp oder wie? ich versteh nicht ganz was du suchst? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
debitux Geschrieben 19. September 2002 Autor Teilen Geschrieben 19. September 2002 Also ich hab nen Cronjob der kopiert immer aktuelle Dateien. Ich will die aber nicht überschreiben, sondern ins Datum umändern. In date +%D. :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
debitux Geschrieben 19. September 2002 Autor Teilen Geschrieben 19. September 2002 das war genau das richtige. Jedoch wie ist die Variable für den mm/dd/jjjj auszugeben? Kenne mich mit dem awk nicht aus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 19. September 2002 Teilen Geschrieben 19. September 2002 in $8 'befindet' sich der Wert 8ten Spalte, den 'ls -l' ausgibt; da du den Dateinamen noch mit angibst ist Zeile und Spalte genau definiert und der Wert in Feld '$8' wird in die Variable $8 gespeichert ich finde es nicht schlau dass du die Datei in dem Format "mm/dd/jj" angeben willst (date +%D), denn es kann auch sein dass sich Daten nicht nur einmal am Tag ändern sondern auch im Sekundentakt oder etwa nicht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DanielB Geschrieben 19. September 2002 Teilen Geschrieben 19. September 2002 Hmm... Dateinamen die "/" enthalten sind glaube ich nicht wirklich gültig. Wir wäre es hiermit ? #!/bin/bash source="/tmp/foo" destination="/tmp/bar-`date +%D -r $source | sed -e 's#/#-#g'`" mv $source $destination Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
debitux Geschrieben 20. September 2002 Autor Teilen Geschrieben 20. September 2002 Wie siehts jedoch aus wenn mehrere Dateien im Verzeichnis sind? Da wäre doch ne while Schleife angebracht oder? Aber ich weiß nicht wie ich die Dateien hochzählen könnte... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DanielB Geschrieben 21. September 2002 Teilen Geschrieben 21. September 2002 Poste doch mal die genaue Situation wofür du soetwas brauchst.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
cwh Geschrieben 25. September 2002 Teilen Geschrieben 25. September 2002 Original geschrieben von MuhKuh Hi Leutz, wie kann ich in einem Shellskript Dateien ins aktuelle Datum (als Dateiname) umändern? Auf SuSE-Distris (ab welcher weiß ich nich, aber ab 7.3 bestimmt) gibt es ein kleines Shellscript namens "old", das macht z.B. sowas: fstab -> fstab-20020925 Das Script sieht so aus: #!/bin/bash # # This script simply renames files or directories to <name>-<date>[<num>] # # Copyright © 1996-2002 SuSE Linux AG, Nuernberg, Germany. # # please send bugfixes or comments to feedback@suse.de. # # # usage - tell user to use program # function usage() { echo usage: "$0" file\|dir [file\|dir ...] } if [ $# -eq 0 ] ; then usage exit fi DATESTRING=`date +"%Y%m%d"` for i in "$@" ; do i=${i%%/} if [ -e "$i" ] ; then NEWNAME=$i-$DATESTRING NUMBER=0 while [ -e "$NEWNAME" ] ; do NEWNAME=$i-$DATESTRING-$NUMBER let NUMBER=$NUMBER+1 done echo moving "$i" to "$NEWNAME" mv "$i" "$NEWNAME" else echo "$i" does not exist. fi done #-------------------------------------------- Ciao, Christopher Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 30. September 2002 Teilen Geschrieben 30. September 2002 habs gerade ausprobiert (hab auch noch SuSE 7.3 am laufen ;-)) und das funzt einwandfrei. Wie wäre es nun mit diesem kleinen Helferlein und einer while Schleife, die sagen wir alle 5 sek. checkt, ob etwas Neues ins Verzeichnis gekommen ist, falls ja - dann mit old verwurstet und falls nichts Neues kam dann nix tut?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DevilDawn Geschrieben 30. September 2002 Teilen Geschrieben 30. September 2002 host:~/shelltest # ls -1 . .. bla.log foo.log mumpfpuffel.log test.sh host:~/shelltest # ./test.sh cp bla.log bla.log20020930-1421-1 cp foo.log foo.log20020930-1421-2 cp mumpfpuffel.log mumpfpuffel.log20020930-1421-3 Der Code dazu ist simpel: #!/bin/sh MYDATE=`date +%Y%m%d-%H%M` MYCOUNT=1 MYPATTERN='*.log' ls -1 ${MYPATTERN} | ( while read MYFILE do MYNEWFILE=${MYFILE}${MYDATE}-${MYCOUNT} echo cp $MYFILE $MYNEWFILE MYCOUNT=`expr $MYCOUNT + 1` done ) Wie man sieht echo'd das Script im Moment nur den Copy-Befehl. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.