Eu assumo o UNIX / Linux por causa do comando "rm".
Todos os arquivos estão no mesmo diretório? Se não, isso complica muito as coisas.
Se estiverem, você provavelmente tem um problema com muitos arquivos em um diretório e deve pensar no seu layout.
Isso funcionará, mas será lento:
seq 1 1294131 | xargs -i{} echo rm file_name_{}_rest_of_file
(claro, tire o eco quando quiser executar o verdadeiro rm)
Para acelerar as coisas, eu faria globs nos arquivos que não precisam de comparação:
rm file_name_[1-9]_rest_of_file
rm file_name_[1-9][0-9]_rest_of_file
rm file_name_[1-9][0-9][0-9]_rest_of_file
rm file_name_[1-9][0-9][0-9][0-9]_rest_of_file
até que sua shell reclame sobre o tamanho da linha de comando.
Outra rápida e suja seria:
find . -name 'file_name_*_rest_of_file' | sort -n > /tmp/files.txt
edite file.txt para remover arquivos que devem não ser excluídos
< /tmp/files/txt xargs rm
Você também pode escrever um script que tokenize o nome do arquivo em componentes, extraia a "contagem", faça uma comparação e, em seguida, exclua ou transmita o arquivo. Mas isso provavelmente levaria mais tempo do que o acima.