Estou tendo dificuldades para encontrar correspondências no diretório atual e em seus subdiretórios.
Quando executo find *test.c
, apenas as correspondências no diretório atual. (não aparece em subdiretórios)
Se eu tentar find . -name *test.c
, esperaria os mesmos resultados, mas, em vez disso, fornecerá apenas correspondências que estão em um subdiretório. Quando há arquivos que devem corresponder no diretório de trabalho, ele me fornece:find: paths must precede expression: mytest.c
O que esse erro significa e como posso obter as correspondências do diretório atual e de seus subdiretórios?
find
de msysgit pode lançar esse erro, a menos que cercam o padrão com aspas:find . -name "*test.c"
. (No caso de você optar por preferir que o Windows seja diferentefind.exe
e use do cmd)Respostas:
Tente colocá-lo entre aspas - você está se deparando com a expansão de curinga do shell, então o que você está realmente procurando é:
... causando o erro de sintaxe. Então tente isso:
Observe as aspas simples em torno da expressão do arquivo - elas impedirão que o shell (bash) expanda seus curingas.
fonte
echo *test.c
... o resultado não será eco expandindo o curinga, mas o próprio shell. A lição é simples se você estiver usando wildcards, citar o filespec :-)find . -type f -printf ‘%TY-%Tm-%Td %TT %p\n’
como encontrado na web e recebi "caminhos devem preceder a expressão". O problema era que as aspas eram "inteligentes" demais. Digitei novamente o comando, fazendo com que as aspas fossem substituídas e ele foi executado.find
- se*.$variable
você estiver usando um curinga, precisará de aspas duplas.O que está acontecendo é que o shell está expandindo "* test.c" em uma lista de arquivos. Tente escapar do asterisco como:
fonte
find . -name '*txt'
Tente colocá-lo entre aspas:
fonte
No manual de localização:
fonte
Me deparei com essa pergunta quando estava tentando encontrar vários nomes de arquivos que não conseguiam combinar em uma expressão regular, conforme descrito na resposta de @Chris J, eis o que funcionou para mim
-o
ou-or
é OR lógico. Veja Localizando arquivos no Gnu.org para mais informações.Eu estava executando isso no CygWin.
fonte
No meu caso, eu estava perdendo o
/
caminho.fonte
/
não é necessário.