2010-11-15 3 views
10

Возможно ли отформатировать время выхода stat? Я используюUNIX stat time format

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

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

Пример вывода следующим образом:

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

вашего вопрос неоднозначен, пожалуйста, обновите ваш вопрос с ожидаемым выходом – ajreal

+1

выхода не имеет значения; Я просто хотел знать, возможно ли форматирование внутри stat. – scott77777

ответ

6

Вы могли бы попробовать что-то вроде:

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')" 
5

Вы можете просто полоса десятичной части, как это:

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