locate armazena em buffer o fluxo STDOUT, você precisa fazer o STDOUT de locate unbuffered (ou line buffered).
Se você estiver em um sistema GNU, você pode usar stdbuf (vem com o GNU coreutils ).
Para tornar o STDOUT de locate unbuffered:
stdbuf -o0 locate something | ...
Linha em buffer:
stdbuf -oL locate something | ...
Verifique man stdbuf para ter mais ideia.