El comando que has puesto edita el fichero 'fichero.txt', cambiando el primer 'hola' de cada línea por el texto 'ok', que creo que no tiene nada que ver con lo que preguntas.
Para buscar una palabra dentro de ficheros se suelen usar los comandos del sistema grep(1) (y familiares) o el
ack (que es la versión moderna de grep(1), escrita en Perl).
Si quieres hacerlo en forma de programa Perl, deberás incluir instrucciones para recorrer todos los ficheros de forma recursiva a partir del directorio de trabajo, y por cada uno, abrirlo si es de texto (cosa fácil con los operadores -X), leerlo línea a línea y buscar la palabra dentro de la línea. Si es una palabra fija, usa index(). Si usas comodines, los tendrás que traducir a una expresión regular. Y sales inmediatamente del bucle de lectura de líneas en cuanto encuentres la primera ocurrencia de la búsqueda.
Sí... es más rápido usar
grep(1).