Procura por arquivos que contenham uma string e lista seus nomes ordenados pela data modificada

2

Eu uso este comando para encontrar todo o arquivo em um diretório que contenha uma string específica:

grep -lir "string" path_to directory

Exemplo

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

Este comando exibe todos os arquivos no diretório especificado que contêm a string 'users'. No entanto, quero classificá-los por data de modificação descendente; mais recente para o mais antigo.

Alguma ajuda?

    
por Emilio Galarraga 12.04.2017 / 14:56

2 respostas

4

Primeiro, usamos a opção Z e, na outra ponta, a opção xargs com -0 capturará os nomes dos arquivos e os registrará, classificará e removerá as informações de tempo para revelar uma nova lista ordenada mais recente.

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

com zsh :

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

Isso usa qualificadores glob para selecionar apenas o arquivos regulares ( . ) que contêm string (ou seja, os resultados glob para os quais a expressão e_'grep -qi "string" $REPLY'_ retorna true ) e depois via om classifica os resultados finais por mtime (o mais recente primeiro). Remova o D se você não quiser procurar arquivos ocultos.

    
por 12.04.2017 / 15:27