Possível cenário:
Existe А
do script cirílico e existe A
do latim . Eles podem parecer iguais, mas são codificados de forma diferente.
Se o segundo "A" no nome do arquivo problemático não for latim, você pode ter digitado como
ls dis/AS
depois clique em tab e seu shell completou automaticamente o nome com o cirílico, você nem sabia a diferença. Você percebeu que ls
funcionou.
Em seguida, você bateu em & uparrow; , fez uma edição em linha e transformou ls
em find
, sem tocar no caminho (ele ainda continha caracteres não latinos). Você percebeu find
trabalhado.
Mas quando você digita grep
, você digita ASA.md
manualmente. É tudo latim, não há cirílico nele. Comandos não funcionam como você espera.
Não estou dizendo que é A
, com certeza. Eu estou dizendo que um ou mais personagens podem não ser o que você pensa que eles são.
Para confirmar ou ignorar esse cenário, eu analisaria a saída hexadecimal do comando find
que funciona :
find dis/ASА.md | xxd
e compare com este comando digitado manualmente :
echo dis/ASA.md | xxd
Observação: meu post usa o cirílico А
em alguns lugares, portanto, não copie e cole sem pensar.
Por outro lado, seu código literal postado no corpo da pergunta parece usar dis/ASA.md
de maneira coerente, somente em latim. Se foi copiado do terminal (não digitado independentemente), então minha hipótese provavelmente não se aplica ao seu caso particular.