Procure arquivos que contenham uma string e liste seus nomes classificados pela data de modificação

Procure arquivos que contenham uma string e liste seus nomes classificados pela data de modificação

Eu uso este comando para encontrar todos os arquivos em um diretório que contém 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 decrescente; mais novo para o mais antigo.

Qualquer ajuda?

Responder1

Primeiro, usamos a Zopção e, na outra extremidade, xargs com a opção -0 capturará os nomes dos arquivos e os declarará, classificará e removerá as informações de tempo para revelar uma primeira lista classificada mais recente.

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

Responder2

Com zsh:

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

Isso usaeliminatórias globaispara selecionar apenas os 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, em seguida, omclassificar os resultados finais por mtime(mais novo primeiro). Remova o Dse não quiser procurar arquivos ocultos.

informação relacionada