Exact timestamp for sorting and renaming files according to
creation order
Julian H. Stacey
jhs at berklix.com
Wed Jan 4 14:02:41 UTC 2012
Hi,
Devin Teske wrote:
> > -----Original Message-----
> > From: owner-freebsd-questions at freebsd.org [mailto:owner-freebsd-
> > questions at freebsd.org] On Behalf Of Polytropon
> > Sent: Tuesday, January 03, 2012 1:00 PM
> > To: Dan Nelson
> > Cc: FreeBSD Questions
> > Subject: Re: Exact timestamp for sorting and renaming files according to
> creation
> > order
> >
> > On Tue, 3 Jan 2012 14:49:02 -0600, Dan Nelson wrote:
> > > If you ask for the date to be printed in "float" (F) format, it gives
> > > more precision. The default is unsigned int (U) format.
> > >
> > > % stat -f "%N %FB" /COPYRIGHT
> > > /COPYRIGHT 1306190895.046721049
> >
> > Strangely, I only get a 000000000 "suffix" for any time stamp, no matter if I
> create
> > the file or apply the command as shown above to an existing file:
> >
> > % stat -f "%N %FB" /COPYRIGHT
> > /COPYRIGHT 1313951230.000000000
> >
> > Am I missing some file system feature?
> >
> > Otherwise, this _exactly_ looks like what I'm searching for. It doesn't need
> to be
> > a "human-readable" date representation.
> >
> > by the way, I'm running FreeBSD 8.2-STABLE/x86 of late August 2011 here, file
> > system used is UFS2.
>
> On ZFS, all is well...
>
> % df -hT /raid1/jails/package8-1/COPYRIGHT
> Filesystem Type Size Used Avail Capacity Mounted on
> raid1/jails/package8-1 zfs 835G 672M 835G 0%
> /raid1/jails/package8-1
>
> % stat -f "%N %FB" /raid1/jails/package8-1/COPYRIGHT
> /raid1/jails/package8-1/COPYRIGHT 1324356049.328275367
>
> But alas, on UFS2:
>
> % df -hT /COPYRIGHT
> Filesystem Type Size Used Avail Capacity Mounted on
> /dev/mfid0s1a ufs 989M 64M 846M 7% /
>
> % stat -f "%N %FB" /COPYRIGHT
> /COPYRIGHT 1279505857.000000000
>
> --
> Devin
I was wondering how df (& stat) could show more than seconds
(Remembering back to 1990 & my
http://berklix.com/~jhs/src/bsd/jhs/bin/public/statv/
when Unix used unsigned long seconds since 1 jan 1970
( & MSDOS was seconds divided by 2 since 1 jan 1980 )
)
FreeBSD 8.2-RELEASE /usr/src/usr.bin/stat/stat.c
line 320 etc still uses the normal fstat stat lstat.
But man 2 stat has extended :
#ifndef _POSIX_SOURCE
#define st_atime st_atimespec.tv_sec
#define st_mtime st_mtimespec.tv_sec
#define st_ctime st_ctimespec.tv_sec
#endif
cd /usr/include/sys ; vi -c/tv_sec /types.h stat.h
#if __BSD_VISIBLE
#define st_atime st_atimespec.tv_sec
struct timespec
#include <sys/time.h>
time.h: #include <sys/timespec.h>
timespec.h:
struct timespec {time_t tv_sec;/* seconds */ long tv_nsec;/* nanoseconds */};
I guess extended timespec may get compiled in to VFS but not UFS,
but no time to look further, Good luck Polytropn.
PS Here with UFS (per Dan's tip, thanks) I see:
sysctl vfs.timestamp_precision=2 ; stat -f "%N %FB" /etc/motd
/etc/motd 1306839862.000000000
Cheers,
Julian
--
Julian Stacey, BSD Unix Linux C Sys Eng Consultants Munich http://berklix.com
Reply below not above, cumulative like a play script, & indent with "> ".
Format: Plain text. Not HTML, multipart/alternative, base64, quoted-printable.
More information about the freebsd-questions
mailing list