Использование статистики для времени или даты -r?

awk '{ if (length($0)>maxlength) { maxlength=length($0); longest_line=$0; } };
     END { print longest_line; }' inputfile
0
20.02.2020, 13:37
1 ответ

Ваш statкажется реализацией GNU stat. Команда statпоявилась в GNU coreutils в 2001 году.с совершенно другим API, чем у предыдущих statреализаций (, таких как zsh, встроенный в 1997 году, или еще более старый IRIX stat), дублирующий функциональность GNU find -printfи снова с другим API (. ] разные %xспецификаторы формата )и, как вы выяснили, менее полезный. С тех пор меня это раздражает. (BSD реализовала собственный statгод спустя с еще одним (, хотя и лучшим )API ).

Здесь вы можете использовать GNU findвместо (этот синтаксис предшествует GNU statкак минимум на десятилетие):

find./* -prune -printf '--------------
File:              %f
Size:              %s
Owner:             %u
Group:             %g
Permissions:       %m
Modification time: %TF %8TT %Tz
'

Что дает результат, подобный:

--------------
File:              file
Size:              10
Owner:             stephane
Group:             stephane
Permissions:       -rw-r--r--
Modification time: 2019-11-13 11:34:54 +0000

Здесь, используя%F %T %zstrftime()форматирование времени, которое является стандартным и недвусмысленным представлением метки времени с точностью до секунды, вы можете адаптироваться к своим потребностям.%T<x>(где <x>— спецификатор формата strftime())— время последней модификации; используйте %A<x>для времени последнего доступа, %C<x>для времени изменения статуса.

Удалите %zспецификацию смещения часового пояса(%Tzвыше ), если она вам не нужна, хотя это сделает представление времени двусмысленным.

С помощью statвстроенного в zsh(, который снова предшествует GNU на несколько лет):

zmodload zsh/stat
for f (*) {
  stat -F '%F %T %z' -sLH s -- $f &&
    print -r -- "--------------
File:              $f
Size:              $s[size]
Owner:             $s[uid]
Group:             $s[gid]
Permissions:       $s[mode]
Modification time: $s[mtime]"
}

(еще раз, удалите %z, если вы не хотите видеть смещение часового пояса ).

Предупреждение :для символических ссылок, GNUstat(без -L), GNUfind -printf(без -L), zsh stat -Lсообщают время модификации самих символических ссылок, в то время как GNUdate -r(и GNU stat -L, а также GNU find -L -printfи zsh statбез-L)сообщают mtime файла, на который символическая ссылка в конечном итоге разрешается.

0
28.04.2021, 23:22

Теги

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