Destaque os três últimos arquivos atualizados na saída ls

10

Existe alguma maneira de sobrecarregar ou agrupar o lscomando para que ele destaque / sublinhe / torne óbvio os últimos três arquivos modificados?

Eu sei que posso simplesmente ls -rtlpedir por tempo de modificação reversa, mas geralmente preciso de uma lista alfabética de arquivos, apesar de gostar de identificar rapidamente o último arquivo que eu ou outro desenvolvedor modificou.

dotancohen
fonte

Respostas:

15

O seguinte parece funcionar para mim

 grep --color -E -- "$(ls -rtl | tail -n3)|$" <(ls -l)

Ele usa grep com destaque na entrada ls -le usa uma expressão regular para procurar uma das entradas do comando três mais antigo. Ele também procura o final da linha $para imprimir o arquivo inteiro.

Você também pode colocá-lo em uma função, de modo que possa ser usado lll *com vários argumentos, da mesma maneira que usarials

function lll ()
{
    command grep --color -E -- "$(ls -rtl $@ | tail -n3)|$" <(ls -l $@)
}
Bernhard
fonte
1
+1: Isso é muito melhor do que a ls -l | grep --color=ALWAYS -C 1000 -E `ls -rt | tail -n 3 | perl -0777 -e '$x=join("|",split(" ",<>));print $x'`
frase
2
Isso é ridiculamente épico. : D
whoami
Otimo trabalho. Observarei que, se você tentar isso em um diretório que contém menos de três arquivos, eu recebo o erro "grep: Invalid range end".
Jason R
1
@dotancohen Você é bem-vindo, graças para o desafio :)
Bernhard
1
function lll () { command grep --color -E -- "$(ls -rtl $1 | tail -n3)|$" <(ls -l $1) }Com esta função, você pode dar um diretório como argumento, ou seja lll /home@dotancohen
Bernhard
4

Ele não destacará os três últimos arquivos modificados (o que eu acho que é uma coisa bastante difícil de obter com segurança), mas ls++pode ser suficiente para o que você deseja. Ele destaca os arquivos por idade relativa, agrupando por arquivos coloridos com segundos, horas, dias ou meses.

captura de tela ls ++

Você pode configurar as cores para tornar a escala de tempo em que você tende a trabalhar mais aparente (para codificação ativa, horas x dias é o ponto de cruzamento mais importante para mim).

ire_and_curses
fonte
Bom obrigado. No entanto, geralmente estou SSHing em servidores nos quais não consigo instalar pacotes.
dotancohen
1
@dotancohen É um único script perl, você deve poder instalá-lo no seu diretório pessoal ( ~/binou algo mais, adicionar ao seu PATH no perfil) - embora isso não funcione se houver dependências que não estiverem instaladas.
Random832
Entendo, obrigado Random! Na verdade, eu geralmente tenho coisas $HOME/bin/.
dotancohen 27/09/12