Resalte los tres últimos archivos actualizados en la salida ls

10

¿Hay alguna forma de sobrecargar o ajustar el lscomando para que resalte / subraye / de lo contrario haga obvio los últimos tres archivos modificados?

Sé que puedo simplemente ls -rtlordenar por tiempo de modificación inverso, pero generalmente necesito una lista alfabética de archivos a pesar del hecho de que me gustaría identificar rápidamente el último archivo que yo u otro desarrollador modifiqué.

dotancohen
fuente

Respuestas:

15

Lo siguiente parece funcionar para mí.

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

Utiliza grep con resaltado en la entrada ls -ly usa una expresión regular para buscar cualquiera de las entradas para los tres comandos más antiguos. También busca el final de línea $para imprimir todo el archivo.

También puede ponerlo en una función, de modo que pueda usarlo lll *con múltiples argumentos, tal como lo usaríals

function lll ()
{
    command grep --color -E -- "$(ls -rtl $@ | tail -n3)|$" <(ls -l $@)
}
Bernhard
fuente
1
+1: Eso es mucho más agradable que el loco que finalmente se me ocurrió:ls -l | grep --color=ALWAYS -C 1000 -E `ls -rt | tail -n 3 | perl -0777 -e '$x=join("|",split(" ",<>));print $x'`
ire_and_curses
2
Eso es ridículamente épico. : D
whoami
Impresionante trabajo. Notaré que si intenta esto en un directorio que contiene menos de tres archivos, aparece el error "grep: Fin de rango no válido".
Jason R
1
@dotancohen De nada, gracias por el desafío :)
Bernhard
1
function lll () { command grep --color -E -- "$(ls -rtl $1 | tail -n3)|$" <(ls -l $1) }Con esta función, puede dar un directorio como argumento, es decir, lll /home@dotancohen
Bernhard
4

No resaltará los últimos tres archivos modificados (lo que creo que es bastante difícil de lograr de manera confiable), pero ls++podría ser suficiente para lo que desea. Destaca los archivos por edad relativa, agrupando por archivos de color que son segundos, horas, días o meses.

captura de pantalla de ls ++

Puede configurar los colores para que la escala de tiempo en la que tiende a trabajar sea más aparente (para la codificación activa, horas frente a días es el punto de cruce más importante para mí).

ire_and_curses
fuente
Genial gracias. Sin embargo, generalmente estoy SSHing en servidores en los que no puedo instalar paquetes.
dotancohen
1
@dotancohen Es un script perl único, debería poder instalarlo en su directorio de inicio ( ~/bino algo así, agregarlo a su RUTA en el perfil), aunque esto no funcionará si hay dependencias que no están instaladas.
Random832
Ya veo, gracias al azar! De hecho, generalmente tengo cosas adentro $HOME/bin/.
dotancohen