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.