Надо написать функцию, в которую ты подаёшь пути к двум файлам и номер строки и она сравнивает эти файлы по этой строке и возвращает true/false (равны по строке, не равны по строке). А потом, когда у тебя есть эта функция, ты просто берёшь каждую пару файлов и подаёшь их в эту функцию. Если она вернула true, удаляешь второй файл и подставляешь следующий для проверки.
Вызовы будут так выглядеть:
Для файлов file1.txt file2.txt file3.txt file4.txt
func(file1.txt, file2.txt, 3)
func(file1.txt, file3.txt, 3)
func(file1.txt, file4.txt, 3)
func(file2.txt, file3.txt, 3)
func(file2.txt, file4.txt, 3)
func(file3.txt, file4.txt, 3)
Там у тебя получится цикл в цикле. Внешний цикл перебирает левые файлы. Внутренний цикл перебирает правые файлы. И вот правые файлы удаляются, если в них дубликат.
Конечно, там получится заморочка: если файл уже удалился как правый, то его не нужно проверять уже как левый файл с другими правыми файлами. Поэтому, чтобы не путаться, ты можешь не удалять правые файлы, а просто записывать пути к ним куда-нибудь. А уже потом, после всего, ты можешь эти пути взять и по ним удалить файлы.