Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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?

Geschrieben

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

Geschrieben
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

Geschrieben

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

Geschrieben


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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...