Mostrar o ano ao listar arquivos no diretório atual

58

Estou trabalhando em um servidor Red Hat. Os comandos ls -lou lla data e a hora em formato +"%b %-d %H:%M".

Quero listar os arquivos de maneira que o ano em que cada arquivo foi criado apareça na data.

Como isso é possível?

WAEL
fonte
Não, eu não acho que eu tente "ls -É" não é encontrada
WAEL
11
ls -lTé para Mac OSX
Kris Roofe
11
Em geral, o Unix não controla os horários de criação dos arquivos e, mesmo quando o faz, lsgeralmente não tem como exibi-lo. Então, em geral, isso é impossível.
G-Man diz 'Reinstate Monica'

Respostas:

86

Você pode usar man lse aqui você pode encontrar o --time-styleparâmetro. Ou você pode usar:

ls --full-time.

Jan Marek
fonte
11
@bob: Concordo totalmente com a Turco. Se você não fizer isso, ninguém se incomodará em responder sua pergunta.
O Cavaleiro das Trevas
5
Exemplo de estilo de horals -l --time-style=+%F
sobi3ch 19/09/19
11
Para quem já lldefiniu como ls -laou algo mais, ll --full-timetambém trabalhe.
Meetai.com
8

ls -lexibirá mês dia e ano - uma vez que , de acordo com a página de manual do BSD: Se o tempo de modificação do arquivo for superior a 6 meses no passado ou no futuro, o ano da última modificação será exibido no lugar dos campos de hora e minuto .

Portanto, para garantir que o ano seja sempre exibido, use:

ls --time-style=long-iso (GNU / Linux)

ls -lT exibirá informações completas sobre o horário em BSD (MacOS)

Daniel Cambría
fonte
6

Como você pediu o ano, ls -lacé fácil lembrar se, como eu, você usa ls -lao tempo todo. A cdá-lhe CTime que exibirá um ano, se não é o ano em curso ou a hora eo minuto que seja.

PhilT
fonte
Eu gosto disso. Muito menos ruído na saída e apenas uma letra para lembrar no futuro.
8777 Eric
11
Isso parece alterar o comportamento de lsaté a data alterada, em vez da data padrão modificada .
Permita-se a falta
2
ls -lexibe data e hora para datas que estão nos últimos seis meses e data e ano para outras datas. O ctime pode ser nos últimos seis meses, tanto quanto mtime (data de modificação), assim como ls -lacexibir os horários (em vez de anos), tanto quanto ls -lapossível. Além disso, como Mateen Ulhaq ressalta, ls -lacnão exibe as mesmas datas que exibe ls -la. Esta resposta está errada.
G-Man diz 'Reinstate Monica'
2
Como no mundo essa "resposta" obteve sete votos?
G-Man diz 'Reinstate Monica'
5

Além da resposta de Jan Marek ... Notei que você pode se safar com apenas:

ls --full ou ls --fu

o que fará o mesmo que ls --full-timeele descreveu. Obrigado Stéphane Chazelas. Agora eu digito em ls --futodos os lugares. :)

G_Style
fonte
11
Or ls --fu. As opções longas no estilo GNU podem ser abreviadas desde que não haja ambiguidade ( --fnão funcionaria, pois há também um --file-type e --format). Observe que uma versão futura pode introduzir um, --full-permspor isso é perigoso confiar nisso.
Stéphane Chazelas
11
Ótimo saber! É tudo sobre digitar menos. :)
G_Style
2

Se você estiver usando busybox(distribuições incorporadas, por exemplo, OpenWRT, LEDE), o switch que você procura é -epara versões até 1.26.2 e --full-timepara 1.27.0 e acima (veja o commit que a mudou ).

Code Bling
fonte
11
-etambém funciona com Solaris lse ast-open's, por isso é realmente mais próximo de um padrão do que o GNU --full-time. Uma pena que o busybox o tenha removido nas versões mais recentes.
Stéphane Chazelas 21/01
@ StéphaneChazelas não sabia disso! Obrigado pela edição
Code Bling
-1

pode favorito:

$ ls -altT / caminho / para / alguns / dir

象 嘉 道
fonte
Como apontado anteriormente , a -Topção não funcionará com o GNU ls(também não especificado no POSIX). Além disso, ao fornecer código como resposta, é melhor explicar o que cada parte faz.
Anthony G - justiça para Monica