Получить список директорий и метки времени в определенном формате в HP-UX

попробуйте

 ... | awk '{if ($1 in used ) {
               if (used[$1] != "" ) print used[$1] ;
               print ;} else used[$1]=$0 ;} '
4
26.11.2018, 02:55
2 ответа

Если не установлены утилиты 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.

3
27.01.2020, 20:57

найти. -тип 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

0
27.01.2020, 20:57

Теги

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