временная разница двух файлов в оболочке unix - PullRequest
2 голосов
/ 17 августа 2011

У меня есть два файла.Мне нужно рассчитать разницу во времени между этими двумя файлами.

Мне нужна разница во времени между test1 и test2: -rw-r - r-- 1 корневой корень 1 авг. 16 16:26 test1 -rw-r - r-- 1 root root 2 декабря 13 2010 test2

Мне нужна разница меток времени между test3 и test4.

-rw-r--r--   1 root     root           3 Aug 16 16:26 test3
-rw-r--r--   1 root     root           4 Aug 16 17:34 test4

Пожалуйста, дайте мне знать, как этого добиться в Solaris,Я использую Solaris, и моя машинная информация:

- Sol 5.10 Generic_127128-11 i86pc i386 i86pc. 

Если вам нужно узнать что-то еще, пожалуйста, дайте мне знать.

Я получил приведенное ниже преобразование даты ответа в секунды в Solaris.

truss /usr/bin/date 2>&1 | grep ^time | awk -F"= " '{print $2}'

но это для текущей даты .. как мы можем сделать это для файла (например, test3, как указано выше)?

Ответы [ 3 ]

3 голосов
/ 17 августа 2011

Команда stat (1) может показывать отметку времени в секундах с начала эпохи:

stat --printf '%Y\n' foo

Таким образом может работать что-то вроде следующего:

(stat --printf '%Y' test2; printf ' - '; stat --printf '%Y\n' test4) | bc -lq

Настроить при необходимости.

0 голосов
/ 17 августа 2011
$ ls -l .bashrc*
-rw-r--r-- 1 max max 360 Dec 14  2010 .bashrc
-rw-r--r-- 1 max max 359 Dec  2  2010 .bashrc~

$ echo $((`stat --format=%Y .bashrc` - `stat --format=%Y .bashrc~`))
1018884

Синтаксис $(()) представляет собой расширение арифметического выражения bash.Что происходит выше, так это то, что временные метки файлов в секундах с момента вычитания эпохи Unix и вывода различий.

0 голосов
/ 17 августа 2011

Попробуйте что-то вроде этого, чтобы получить дату в секундах

date +%s -d "`ls -l test1 | awk -F " " '{ print $6,$7 }'`"
...