Формат времени stat UNIX

можно ли отформатировать вывод времени stat? Я использую

stat -c '%n %A %z' $filename

в скрипте bash, но его формат времени-это не то, что я хочу. Можно ли изменить этот формат в команде, или мне придется вручную сделать это позже?

ниже приведен пример вывода:

/lib drwxr-xr-x 2010-11-15 04:02:38.000000000 -0800

2 ответов


вы можете попробовать что-то вроде:

date -d "1970-01-01 + $(stat -c '%Z' $filename ) secs"

что дает вам только дату. Вы можете отформатировать дату, используя параметры форматирования даты (см. свидание), например:

date -d "1970-01-01 + $(stat -c '%Z' $filename ) secs" '+%F %X'

Это не дает вам имя и разрешения, но вы можете сделать это, как:

echo "$(stat -c '%n %A' $filename) $(date -d "1970-01-01 + $(stat -c '%Z' $filename ) secs"  '+%F %X')"

вы можете просто удалить десятичную часть, как это:

stat -c '%n %A %z' "$filename" | sed 's/\(:[0-9]\{2\}\)\.[0-9]* / /'

Edit:

вот еще один способ обрезать дробную часть:

stat -c '%n %A %.19z' "$filename"

Это зависит от даты 19 символов: 2010-11-15 04:02:38