попробуйте
... | awk '{if ($1 in used ) {
if (used[$1] != "" ) print used[$1] ;
print ;} else used[$1]=$0 ;} '
Если не установлены утилиты GNU, лучше всего, вероятно, perl
использовать эти традиционные системы:
perl -MPOSIX -MFcntl -MFile::stat -le '
setlocale(LC_TIME, "C");
for (<*>) {
$s = lstat $_ or die "$_: $!\n";
print "$_ ". uc(strftime("%d-%b-%Y %I:%M:%S %p", localtime $s->mtime))
if S_ISDIR($s->mode)
}'
Это perl
интерфейс стандартного POSIX lstat()
системного вызова, который получает метаданные файла и strftime()
функцию форматирования дат.
Подробнее см. perldoc POSIX
, perldoc -f lstat
, perldoc -f stat
, man lstat
, man strftime
.Мы используем локаль C для LC_TIME
, поэтому мы получаем английские названия месяцев и PM
/AM
независимо от предпочтений пользователя.
Если установлено zsh
:
zsh -c 'zmodload zsh/stat
LC_ALL=C stat -nA times -LF "%d-%b-%Y %I:%M:%S %p" +mtime -- *(/) &&
for f t ($times) printf "%s\n" "$f: ${(U)t}"'
Выше мы использовали perl
с uc()
и zsh
с ${(U)var}
для преобразования меток времени в верхний регистр. В системах GNU вы могли бы использовать %^b
для всего -сокращения месяца в верхнем регистре, но это не похоже на то, что оно доступно в HP/UX.
найти. -тип d -exec stat {} \; — это обычный способ Unix System V. Кажется, что stat становится fstat на HP -UX, поэтому команда становится найти. -тип d -exec fstat {} \;
В зависимости от ваших требований вам, возможно, придется направить вывод в awk (, nawk или gawk ), чтобы получить именно то, что вы ожидаете.
Ссылка:http://hpux.connect.org.uk/hppd/hpux/Shells/fstat-1.0/man.html