Situación: tengo que buscar la última aparición de una cadena en un log gigantesco (porque quiero encontrar la última vez que se registró cierto evento).
Problema: ¿cómo encontrarla lo más rápidamente posible?
Solución: ejecutar una búsqueda en orden reverso a partir del final del archivo utilizando less
.
less
es un programa similar a more
(herramienta para mostrar texto por pantalla), pero con mejores características. No necesita leer la entrada completa antes de comenzar a mostrar salida por pantalla, por lo cual los archivos de gran tamaño comienzan a visualizarse más rápidamente que con otros editores como vi
o nano
. Sus comandos están basados en more
y vi
Abrir el archivo de log con less
, por ejemplo:
root@hal9000:/home/emi # less /var/log/dmesg.today
Luego presionar la tecla End
(o Fin
en teclados españoles) para posicionarse en el final del archivo:

Se observa el mensaje (END)
en la línea de comandos (última línea de pantalla).
Para realizar una búsqueda se debe utilizar la tecla /
seguida del texto a buscar (por ejemplo "FreeBSD"):

La cadena a buscar es sensible a mayúsculas, por lo que no es lo mismo "freebsd" que "FreeBSD".
Al presionar la tecla "Intro" o "Enter" comienza la búsqueda en orden directo (de principio a fin del archivo), pero como estamos posicionados al final del archivo muy probablemente no haya resultados (salvo que la cadena aparezca en la pantalla actual):

Sin embargo, es posible buscar en orden reverso (de fin a principio, de atrás hacia adelante) utilizando el comando N
, esto es, letra ene mayúscula. Para ello presionar la combinación de teclas Shift
+N
:

De esta forma se obtiene la última aparición de la cadena en el archivo. Repetir esta combinación para seguir buscando de atrás hacia adelante:

Referencias
man less man more man vi