Возможный сценарий:
Есть А
от кириллицы и есть A
от латыни . Они могут выглядеть одинаково, но кодируются по-разному.
Если вторая буква «A» в проблемном имени файла не является латиницей, возможно, вы набрали:
ls dis/AS
затем нажмите, tabи ваша оболочка автоматически заполнит имя кириллицей, вы даже не почувствуете разницу. Вы заметили, что это ls
сработало.
Затем вы нажимаете ↑, выполняете встроенное редактирование и превращаетесь ls
в find
, не касаясь пути (он все еще содержал нелатинский символ). Вы заметили, find
работает.
Но когда вы печатаете grep
, вы печатаете ASA.md
вручную. Это все латынь, в ней нет кириллицы. Команды не работают так, как вы ожидаете.
Я не говорю, что это A
точно. Я говорю, что один или несколько персонажей могут быть не такими, как вы думаете.
Чтобы подтвердить или отклонить этот сценарий, я бы проанализировал шестнадцатеричный вывод find
команды, которая работает :
find dis/ASА.md | xxd
и сравните с этой командой, набранной вручную :
echo dis/ASA.md | xxd
Примечание: мой пост использует кириллицу А
в нескольких местах, поэтому не копируйте и не вставляйте ее бездумно.
С другой стороны, ваш буквальный код, размещенный в теле вопроса, кажется, используется dis/ASA.md
согласованным, только на латинице. Если он был скопирован с терминала (не напечатан независимо), то моя гипотеза, вероятно, не относится к вашему конкретному случаю.