Формат времени в формате UNIX
Можно ли отформатировать время выхода stat? Я использую
stat -c '%n %A %z' $filename
в bash script, но его формат времени - это не то, что я хочу. Можно ли изменить этот формат в команде или мне придется вручную сделать это позже?
Ниже показан пример вывода:
/lib drwxr-xr-x 2010-11-15 04:02:38.000000000 -0800
Ответы
Ответ 1
Вы можете попробовать что-то вроде:
date -d "1970-01-01 + $(stat -c '%Z' $filename ) secs"
Это дает вам только дату. Вы можете форматировать дату, используя параметры форматирования даты (см. man date), например:
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')"
Ответ 2
Вы можете просто разбить десятичную часть следующим образом:
stat -c '%n %A %z' "$filename" | sed 's/\(:[0-9]\{2\}\)\.[0-9]* /\1 /'
Edit:
Вот еще один способ усечения десятичной части:
stat -c '%n %A %.19z' "$filename"
Это зависит от даты длиной 19 символов: 2010-11-15 04:02:38