(Ubuntu / Linux) comando “find” fornece resultados diferentes baseados em aspas

4

eu estava usando

find -iname *prib*

e obtendo apenas um resultado "./prib09jack.pdf" com

find -iname "*prib*" 

Eu recebo muitos mais resultados que eu estava procurando, como

./Dir1/PRIB09/prib09jackTFF1.pdf

e muito mais, mas por que importava que as aspas estivessem por volta de " prib "?

Melhor.

    
por Vass 26.08.2010 / 18:13

2 respostas

10

Se houver um arquivo (ou arquivos) correspondente a *prib* no diretório atual quando o comando find for executado, o shell expandirá o curinga para corresponder primeiro ao (s) nome (s) do arquivo antes de passar os argumentos para encontrar e resultar em um comando diferente sendo executado do que o usuário espera.

Por exemplo,

$ ls foo*
foobar

$ find -iname foo*
./foobar

$ find -iname "foo*"
./foobar
./dir/foobz
./dir2/fooblat

Em suma, as citações atrasam a interpretação de curingas para o comando find executar. A falta de citações se expande imediatamente.

    
por 26.08.2010 / 18:42
1

O problema é que seu shell está expandindo o curinga * antes de entregá-lo para localizar. Você quer encontrar para obtê-los, então você precisa escapar deles. As citações fazem isso, ou você poderia fazer

find -iname \*iprib\*

e também funcionaria. A principal coisa é, você quer que os curingas façam com que ele seja não interpretado por qualquer outra coisa ao longo do caminho (como o seu shell).

    
por 26.08.2010 / 22:18