Como exibir apenas a última linha de uma listagem?


12

Suponha que eu faça uma lista e classifique os arquivos por seu atributo temporal:

ls -ltr

-rwxrwxrwx 1 bla bla 4096 Feb 01 20:10 foo1
-rwxrwxrwx 1 bla bla 4096 Feb 01 20:12 foo2
.
.
.
-rwxrwxrwx 1 bla bla 4096 Mar 05 13:25 foo1000

O que devo adicionar atrás do ls -ltr em uma cadeia de tubos para obter apenas a última linha da listagem? Sei que existem sed e awk, mas não sei como usá-los, só sei o que eles podem fazer.

Respostas:


25

Desde que você perguntou sobre o sed especificamente,

ls -ltr | sed '$!d'

obrigado, agora estou um pouco orgulhosa por ter aprendido um pouco de concreto.
Abdul Al Hazred

3
Além disso, sed -n '$p'faz a mesma coisa, mas tail -1é realmente a ferramenta certa para o trabalho.
9117 imiric

Obrigado! Consegui extrair a última linha em / proc / cpuinfo e aparar o zero inicial com facilidade (usado para extrair o número de série do RPi3 com facilidade):sed '$!d s/.*: 0\+//' /proc/cpuinfo
Yaron

11

Você está procurando tail:

ls -ltr | tail -n 1

Isso exibirá apenas a última linha de ls -ltrsaída. Você pode controlar o número de linhas alterando o valor depois -n; se você omitir -n 1completamente, receberá dez linhas.


resposta perfeita, muito rápida e útil
Abdul Al Hazred

tail -1... -né redundante.
dhchdhd 20/09/18

O @Barry tail -1está obsoleto (consulte a seção “RATIONALE” da especificação POSIXtail ou a última parte do manual GNUtails ); ainda funciona nesse caso, por enquanto, mas é melhor evitar usá-lo em exemplos.
Stephen Kitt

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.