Como altero o formato de hora usado pela linha de comando ls no osx?

27

Quero fazer o lstempo de exibição em ISOformato (formato militar). Como posso mudar esse comportamento?

No Linux, eu sabia que poderia forçar o ls a exibir o tempo em formato longo usando-nos, --full-timemas isso não funciona no OS X.

Atualização: Eu sei que o formato usado pelo comando é baseado nas localeconfigurações. O problema é que no OS XI não foi possível usar o truque de configuração LC_TIME=en_DK.

sorin
fonte
1
Uma resposta sem resposta, mas ainda possivelmente útil: O comando stat (1) é bastante flexível e pode ser feito para exibir registros de data e hora em qualquer formato desejado.
Harald Hanche-Olsen
gls (gnu ls) que mencionei na minha resposta pode usar um sinalizador --style = onde você pode especificar uma string + FORMAT, para que a data apareça da maneira que desejar.
barryj
Eu gostaria de saber um caminho. O manual BSD da Apple para lsparece não oferecer nada para formatar data e hora, além de alterar o fuso horário e classificar por data e hora em vez de alfa. developer.apple.com/library/mac/documentation/Darwin/Reference/…
jtheletter 12/08/14

Respostas:

16

Se você instalar o gnu coreutils, o gnu ls estará disponível, o que será feito conforme necessário. Se você usa o brew como gerenciador de pacotes, é tão simples quanto:

brew install coreutils
gls -l --time-style=full-iso
barryj
fonte
Obrigado, isso é útil, mas não resolve o problema. O formato completo usado ainda não é ISO-8601.
sorin
OK - você pode instalar o gnu coreutils, que inclui o gnu ls, que fará o que você deseja. A maneira mais fácil é uma das cervejas, MacPorts ou Fink. Eu uso o brew - portanto, apenas executando o 'brew install coreutils' funciona. Você terá gls disponíveis.
barryj
1
Notavelmente, brew install coreutilsresulta em /usr/local/bin/glsinstalação, então você precisa executar em glsvez de ls.
Erik.weathers
Você precisa especificar o formato da hora gls -l --time-syle="+%I"(ou qualquer que seja o gdateformato correto para ISO-8601).
precisa
A chamada correta é assim; gls -l --time-estilo = full-iso
AnneTheAgile
13

O comando interno do OS X lsnão leva tempo para argumentos de formatação, mas o statcomando usa seqüências de caracteres strftime para que você possa obter uma aproximação do que deseja fazendo:

stat -l -t '%FT%T' *

Ele %FT%Tproduz um registro de data e hora local ISO8601. Adicione um %zse desejar um deslocamento UTC.

Mas enquanto o registro de data e hora estiver correto, o restante apenas se aproxima do que você obteria com ls. Por exemplo, ls -lalinha adequadamente os campos em colunas, pode colorir a saída e, é claro, lista o conteúdo do diretório em vez de exigir que você passe todos os nomes de arquivos como argumentos. Você pode pelo menos reproduzir o alinhamento adequado canalizando a saída trpara converter todos os espaços em guias:

stat -l -t '%F%T' * | tr ' ' \\t

Como alternativa, acho que deve ser possível ls -lproduzir um registro de data e hora ISO8601 definindo um código de idioma personalizado, mas ainda não o vi.

algal
fonte
-1

ls -l --time-style=iso funciona bem para mim.

Kumar
fonte
1
Não. Leão da Montanha.
Nakilon 17/09/2013
2
Também não no Mavericks.
argila Pontes
4
Provavelmente funciona bem para o OP, porque ele instalou um não-sistema lssem perceber, através de um gerenciador de pacotes como o brew.
Algal
1
Concorde com @algal. Eu /usr/local/bin/glsinstalei via brew install coreutils, e isso suporta a --time-styleopção. O OP pode ter sido executado, o brew install coreutils --with-default-namesque resultaria na /usr/local/bin/lsinstalação (entre outros utilitários), ou talvez o OP configurasse um link simbólico manual para gls.
Erik.weathers
O que você vê quando entra which ls?
mschaef 02/09