Sistema de controle de vendas - Não consigo consultar um nome de cliente

Boa noite, estou com uma tarefa de programação a ser feita para a faculdade, e cheguei em um impasse. O problema é em um método de consultar um cliente,normalmente em uma string, eu conseguiria usar o IndexOf(); Como no exemplo a seguir:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class Ex03ArquivosTexto {

	public static void main(String[] args) {
		Scanner myObj = new Scanner(System.in);
		String arq = myObj.nextLine();//Arquivo que eu quero
		String palavra = myObj.nextLine();//Nome que eu quero buscar
		try (BufferedReader br = new BufferedReader(new FileReader(arq))) {
			String linha;
			while ((linha = br.readLine()) != null) {
				if (linha.indexOf(palavra) != -1) { //Método indexOf(); que comentei sobre <-------
					System.out.println(linha);
				}
			}
		} catch (IOException e) {
			System.out.println("Erro: " + e.getMessage());
		}


	}

}

Contudo, como em meu código para esta tarefa eu estou trabalhando com OBJETOS e ARQUIVOS DE TEXTO, eu não sei como pegar as informações da mesma maneira, o intuito desse método de Consultar Cliente seria ao digitar o nome qualquer(Pablo, Pedro,Lucas,etc…) o sistema me devolvesse todos os clientes cadastrados que tivessem o nome em questão(Com todas as informações incluídas, cpf, telefone, etc…)
Como dito no programa acima, é mais tranquilo fazer com strings,eu acho o nome e dou um print em todas as linhas que o contém, porém não sei como fazê-lo com objetos.
Segue o código do sistema de controle de vendas:

import java.io.EOFException;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.nio.file.Files;
import java.nio.file.InvalidPathException;
import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Scanner;
//Atributos do cliente para o controle de vendas
	public class ContVendas implements Serializable{
		private String cpf;
		private String telefone;
		private String nome;
//Tabela de seleção(Nova conta, Listagem,etc...)
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int select = 0;
		do {
			System.out.println(" Cadastro de cliente |1|");
			System.out.println(" Listagem de clientes |2|");
			System.out.println(" Consultar cliente |3|");
			System.out.println(" Cadastro de compra |4|");
			System.out.println(" Listagem de compra por data |5|");
			System.out.println(" Listagem de compra por cliente |6|");
			System.out.println(" Sair |0|");
			System.out.print("Opcão: ");
			select = in.nextInt();
			switch (select) {
			case 1:
				novoCliente();
				break;
			case 2:
				listarContas();
				break;
			case 3:
				consultaClientes();
				break;
			case 4:
				break;
			case 5:
				break;
			case 6:
				break;
			case 0:
				break;
			default:
				System.out.println("Opcão inválida!");
			}
		}while (select !=0);
		in.close();
	}
//Método de cadastro de novo cliente
	private static void novoCliente() {
		ContVendas c = new ContVendas();
		try {
			Scanner in = new Scanner(System.in);
			System.out.print("Nome: ");
			c.nome = in.nextLine();
			System.out.print("CPF: ");
			c.cpf = in.nextLine();
			while (numeroCadastrado(c.cpf) != null) {
				System.out.println("Já existe uma conta com esse CPF.");
				System.out.println("Digite novamente.");
				System.out.print("CPF: ");
				c.cpf = in.nextLine();				
			}
			System.out.print("Telefone");
			c.telefone = in.nextLine();
			Path path = Paths.get("clientes.dat");
			if (Files.exists(path)) {
				try (FileOutputStream fos = new FileOutputStream("clientes.dat", true);
						AppendingObjectOutputStream output = new AppendingObjectOutputStream(fos)) {
					output.writeObject(c);
				} catch (FileNotFoundException e) {
					System.out.println("Nao foi possível abrir o arquivo.");
				} catch (IOException e) {
					System.out.println("Erro de escrita no arquivo.");
				}
			} else {
				try (ObjectOutputStream output = new ObjectOutputStream(Files.newOutputStream(path))) {
					output.writeObject(c);
				} catch (IOException e) {
					System.out.println("Erro de escrita no arquivo.");
				}
			}
		}
		catch (InvalidPathException e) {
			System.out.println("Nao foi possivel encontrar o arquivo.");
		}
		finally {
		}
	}
//Método de listagem das contas
	private static void listarContas() {
		try (ObjectInputStream input = new ObjectInputStream(Files.newInputStream(Paths.get("clientes.dat")))) {
			while (true) {
				ContVendas c = (ContVendas) input.readObject();
				System.out.printf( c.nome +"|"+ c.cpf+ "|" + c.telefone + "\n");
			}
		} catch (EOFException e) {
			System.out.println("Fim dos registros");
		} catch (ClassNotFoundException e) {
			System.out.println("Tipo de objeto invalido!");
		} catch (IOException e) {
			System.out.println("Erro de leitura no arquivo");
		}
	}
//Método de consulta de clientes
	private static void consultaClientes() {
		Scanner myObj = new Scanner(System.in);
		String palavra = myObj.nextLine();
		try (ObjectInputStream input = new ObjectInputStream(Files.newInputStream(Paths.get("clientes.dat")))) {
			String linha = null;
			while (true) {
				if (linha.indexOf(palavra) != -1) {
				ContVendas c = (ContVendas) input.readObject();
				System.out.printf( c.nome +"|"+ c.cpf+ "|" + c.telefone + "\n");
				}
			}
		} catch (EOFException e) {
			System.out.println("Fim dos registros");
		} catch (ClassNotFoundException e) {
			System.out.println("Tipo de objeto invalido!");
		} catch (IOException e) {
			System.out.println("Erro de leitura no arquivo");
		}
	}
//Verificação se o CPF já existe
	private static ContVendas numeroCadastrado(String cpf) {
		try (ObjectInputStream input = new ObjectInputStream(Files.newInputStream(Paths.get("clientes.dat")))) {
			while (true) {
				ContVendas c = (ContVendas) input.readObject();
				if ((c.cpf).equalsIgnoreCase(cpf)==true) {
					return c;
				}
			}
		}catch (EOFException e) {
		} catch (ClassNotFoundException e) {
			System.out.println("Tipo de objeto invalido!");
		}
//Caso o arquivo ainda não exista, o programa o cria e continua normalmente.
		catch(NoSuchFileException e) {
	
		}
		catch (IOException e) {
			System.out.println("Erro de leitura no arquivo");
			System.out.println(e);
		}
		return null;
	}


}

Tira essa variável linha, você não está lendo linhas de texto, está lendo Objetos.