awk '{ if (length($0)>maxlength) { maxlength=length($0); longest_line=$0; } };
END { print longest_line; }' inputfile
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 %z
strftime()
форматирование времени, которое является стандартным и недвусмысленным представлением метки времени с точностью до секунды, вы можете адаптироваться к своим потребностям.%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 файла, на который символическая ссылка в конечном итоге разрешается.