Я видел, как это происходило: один файл имел обычное «a» (ASCII 0x61), а другой имел очень похожую «кириллицу» (U + 0430). В кириллическом алфавите есть много символов, которые выглядят точно так же, как латинские («е», «о» - два других часто встречающихся) (*).
Один из способов определить проблему (и злодея): dir
или ls
подать и просмотреть вывод с помощью шестнадцатеричного редактора (в Linux вы также можете использовать более короткое:) ls * | hd
.
IIRC также можно использовать символ Unicode "ZERO WIDTH SPACE (U + 200B)" в имени файла.
(*) Я спрятал некоторые в тексте этого ответа ...