Я резал таким фрагментом кода на части большой файл.
Количество строк указывал вручную в коде.
// Для файла меньше 2 миллиардов строк - работает нормально
string path = Path.Combine(project.Directory, "all.txt"); // путь к большому файлу
int chunkSize = 100000000; // Количество строк в новом файле
IEnumerable<string> data = File.ReadLines(path); // это получил на вход
int count = 782892874; // File.ReadLines(path).Count(); // Сколько строк в большом файле
int index = 0;
while (index < count ) {
string fileName = Path.Combine(project.Directory, string.Format("{0}_{1}.txt", index, chunkSize)); // новое имя
var chunk= data.Skip(index).Take(chunkSize); // берем указатели
File.WriteAllLines(fileName, chunk); // записываем файл
index += chunkSize;
}
Не нужно ничего удалять в большом файле.
Просто режем его на части как колбасу.
А потом - просто удаляем этот большой файл, если он больше не нужен.
Продолжаем работать исключительно уже с мелкими файлами.