Получить временную метку эпохи mtime в миллисекундах из `stat`

Пример тестового сценария, который мне подходит:

#!/bin/sh

raw="1F3C6..1F3CA
1F3CF..1F3D3
1F3E0..1F3F0"

for r in $raw
do
    f1=`echo "${r}" | cut -d'.' -f1`
    f2=`echo "${r}" | cut -d'.' -f2`
    f3=`echo "${r}" | cut -d'.' -f3`
    echo "field 1:[${f1}] field 2:[${f2}] field 3:[${f3}]"
done

exit

И вывод:

field 1:[1F3C6] field 2:[] field 3:[1F3CA]
field 1:[1F3CF] field 2:[] field 3:[1F3D3]
field 1:[1F3E0] field 2:[] field 3:[1F3F0]

Редактировать

После прочтения комментария Stéphane Chazelas и ссылки на вопросы и ответы я повторно -написал выше, чтобы удалить loop.

Я не мог придумать, как убратьloopи части, например, как переменные (; $f1, $f2и $f3в моем первоначальном ответе ), которые можно было передать. Тем не менее я не знаю, что требовалось на выходе в исходном вопросе.

Во-первых, по-прежнему используетсяcut:

#!/bin/sh
raw="1F3C6..1F3CA
1F3CF..1F3D3
1F3E0..1F3F0"

printf '%s\n' "${raw}" | cut -d'.' -f1,3

Что будет выведено:

1F3C6.1F3CA
1F3CF.1F3D3
1F3E0.1F3F0

Можно заменить отображаемый .любой строкой, используя --output-delimiter=STRING.

Далее, с sedвместо cut, чтобы обеспечить больший контроль над выходом:

#!/bin/sh
raw="1F3C6..1F3CA
1F3CF..1F3D3
1F3E0..1F3F0"

printf '%s\n' "${raw}" | sed 's/^\(.*\)\.\.\(.*\)$/field 1 [\1] field 2 [\2]/'

И это сделает:

field 1 [1F3C6] field 2 [1F3CA]
field 1 [1F3CF] field 2 [1F3D3]
field 1 [1F3E0] field 2 [1F3F0]
0
13.07.2019, 18:31
1 ответ

Для реализации GNU Coreutils вы можете использовать

stat --format='%.9Y' file

или просто

stat --format='%.Y' file

Из документации info:

The ‘%W’, ‘%X’, ‘%Y’, and ‘%Z’ formats accept a precision preceded by a period to specify the number of digits to print after the decimal point. For example, ‘%.3X’ outputs the access timestamp to millisecond precision. If a period is given but no precision, ‘stat’ uses 9 digits, so ‘%.X’ is equivalent to ‘%.9X’. When discarding excess precision, timestamps are truncated toward minus infinity.

3
28.01.2020, 02:39

Теги

Похожие вопросы