Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Datum?

Empfohlene Antworten

Veröffentlicht

Hi Leutz,

wie kann ich in einem Shellskript Dateien ins aktuelle Datum (als Dateiname) umändern?

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?

Also ich hab nen Cronjob der kopiert immer aktuelle Dateien. Ich will die aber nicht überschreiben, sondern ins Datum umändern. In date +%D. :-)

das war genau das richtige. Jedoch wie ist die Variable für den mm/dd/jjjj auszugeben? Kenne mich mit dem awk nicht aus.

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?

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

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...

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

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??


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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.