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.