A menos que os utilitários GNU estejam instalados, sua melhor aposta é provavelmente perl nesses sistemas tradicionais:
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)
}'
Essa é a interface perl para a chamada do sistema POSIX lstat() padrão que recupera os metadados do arquivo e a função strftime() para formatar as datas.
Consulte perldoc POSIX , perldoc -f lstat , perldoc -f stat , man lstat , man strftime para detalhes. Usamos a localidade C para LC_TIME , por isso, obtemos os nomes dos meses em inglês e PM / AM , independentemente das preferências do usuário.
Se zsh estiver instalado:
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}"'
Acima, estamos usando perl ' uc() e zsh ' ${(U)var} para converter os registros de data e hora em maiúsculas. Nos sistemas GNU, você poderia ter usado %^b para uma abreviação de mês com letras maiúsculas, mas não parece estar disponível em HP / UX.