Busque archivos que contengan una cadena y enumere sus nombres ordenados por fecha de modificación

Busque archivos que contengan una cadena y enumere sus nombres ordenados por fecha de modificación

Utilizo este comando para buscar todos los archivos en un directorio que contiene una cadena específica:

grep -lir "string" path_to directory

Ejemplo

grep -lir "users" /var/www/mysite

Este comando muestra todos los archivos en el directorio especificado que contienen la cadena 'usuarios'. Sin embargo, quiero ordenarlos por fecha de modificación descendente; más nuevo al más antiguo.

¿Alguna ayuda?

Respuesta1

Primero usamos la Zopción y luego, en el otro extremo, xargs con la opción -0 capturará los nombres de los archivos y los registrará, ordenará y eliminará la información de tiempo para revelar una primera lista ordenada más nueva.

 grep -Zlir users /var/www/mysite | xargs -0 -r stat --format='%Y+%n' | sort -t+ -k 1,1nr | cut -d+ -f2-

Respuesta2

Con zsh:

print -rl ./**/*(.De_'grep -qi "string" $REPLY'_om)

Esto usaclasificatorios globalespara seleccionar solo los archivos normales ( .) que contienen string(es decir, los resultados globales para los cuales e_'grep -qi "string" $REPLY'_devuelve la expresión true) y luego omordena los resultados finales por mtime(los más nuevos primero). Elimine el Dsi no desea buscar archivos ocultos.

información relacionada