Mailinglist Archive: opensuse-de (4464 mails)

< Previous Next >
Re: Wie Dateidatum auslesen und setzen?
  • From: Jan.Trippler@xxxxxxxxxxx (Jan Trippler)
  • Date: Tue, 2 Sep 2003 00:51:06 +0200
  • Message-id: <20030902005106.A20063@xxxxxxxxxxxxxx>
On Mon, 01 Sep 2003 at 00:15 (+0200), Michael Fischer wrote:
> Hallo,
> für ein Preserve-Filetime Script müßte ich dann dem ls -l -xxx das Datum inkl.
> Zeit entlocken und in einem String in korrektem Format speichern, so daß ich
> es an "touch -t $Zeitstempel <Datei>" übergeben kann.
> Die ganzen Formate (iso, long-iso, locale, ...) sind leider saumäßig
> unterschiedlichzum touch Zeitformat.
> Wie extrahiere ich außerdem Datum und Zeit aus der ls Ausgabe?

Wozu ls?

Das folgende in einer Zeile:
touch -t "`date --date \"\`stat dirty_fn | grep Modify |
cut -f2- -d\" \"\`\" +%y%m%d%H%M.%S`" jan

Von innen nach außen:
- stat ermittelt Datei-Infos (man stat) der Datei "dirty_fn"
- grep selektiert das Datum der letzten Modifikation
- cut schneidet ab Feld 2 ab (also das Datum ohne führendes
"Modify")
- der daraus ermittelte String wird an date übergeben (man date),
der den zur -t-Option von touch passenden Timstamp erzeugt
- touch legt die Datei "jan" mit dem entspr. Zeitstempel an

Etwas umständlicher, aber übersichtlicher:
FTIME="`stat dirty_fn | grep Modify | cut -f2- -d\" \"`"
TSTAMP=`date --date "$FTIME" +%y%m%d%H%M.%S`
touch -t $TSTAMP jan

Geht auch anders (per ls, ...), aber mir gefällt stat so gut ;)

Jan


< Previous Next >