Você provavelmente poderia torná-lo um pouco mais rápido executando várias chamadas find
em paralelo. Por exemplo, primeiro obtenha todos os diretórios de nível superior e execute N localizar chamadas, uma para cada diretório. Se você executar o em um subshell, você pode coletar o resultado e passá-lo para o vim ou qualquer outra coisa:
shopt -s dotglob ## So the glob also finds hidden dirs
( for dir in $HOME/*/; do
find -L "$dir" -xtype f -name "*.tex" -exec grep -Fli and {} + &
done
) | vim -R -
Ou, para ter certeza, você só começa a receber a saída quando todas as descobertas tiverem terminado:
( for dir in $HOME/*/; do
find -L "$dir" -xtype f -name "*.tex" -exec grep -Fli and {} + &
done; wait
) | vim -R -
Eu fiz alguns testes e a velocidade para o acima foi de fato um pouco mais rápida do que o único find
. Em média, mais de 10 execuções, a única ferramenta de chamada find
0.898 segundos e a subshell acima executando uma procura por dir demorou 0.628 segundos.
Suponho que os detalhes sempre dependerão de quantos diretórios você tem em $HOME
, quantos deles podem conter .tex
arquivos e quantos podem corresponder, portanto, sua milhagem pode variar.