Esse comportamento é muito estranho e eu nunca encontrei nada parecido usando o Cygwin. Eu não tenho pontos de reputação suficientes para pedir informações usando comentários, então vou postar as técnicas de depuração que eu usaria. Espero que sejam úteis para qualquer pessoa que tenha problemas semelhantes.
Primeiramente, eu tentaria verificar se estava executando o executável correto. A execução de find --version
deve retornar algo como o seguinte:
find (GNU findutils) 4.5.11
Packaged by Cygwin (4.5.11-1)
Se eu ainda não recebesse nenhum resultado, instalaria e usaria o strace
da Cygwin
comando:
mkdir testdir
strace -o find.out find testdir
rmdir testdir
strace
permite que você veja quais chamadas um executável do Cygwin faz para o Cygwin
DLL. Com o comando acima, a saída do comando find é armazenada em
find.out
.
A menos que você esteja familiarizado com a programação do sistema Windows, grande parte dela
não faz sentido No entanto, olhando através da saída ainda lhe dará uma
idéia do que o comando está fazendo, por exemplo, o Cygwin PATH e outro ambiente
variáveis sendo passadas para o comando são capturadas. Eu normalmente pesquiso por open(
para ver quais arquivos o comando (find) está tentando usar. Chamadas bem sucedidas para
a função aberta será exibida como:
open: open(/home/anthony/t, 0x30C000)
open: open(., 0x400000)
Chamadas não desejadas para abrir retornam um valor de -1. Note que nem todos os arquivos que
encontrar tentativas de abrir são realmente necessárias para o comando funcionar corretamente.
Este é um exemplo de uma dessas tentativas malsucedidas (as informações em locale.alias
seria lido se existisse, mas não é necessário que o encontrar faça o seu trabalho):
open: -1 = open(/usr/local/share/locale/locale.alias, 0x8000), errno 2
Observação: eu crio (e, em seguida, removo) o diretório testdir
vazio, para que não haja uma grande quantidade de informações capturadas no arquivo de saída de strace.