A diferença que as aspas fazem no comando find [duplicate]

0

Quando eu tenho um diretório aninhado, o comando find . -name "*.py" -print me fornece todos os scripts python abaixo do diretório atual. No entanto, find . -name *.py -print retorna apenas os scripts python no diretório atual.

Esse comportamento é esperado? O que faz essa diferença? Eu uso o Mac OS X 10.7.

    
por prosseek 13.08.2013 / 23:11

2 respostas

3

Provavelmente não é o mesmo comando. Você pode colocar echo na frente para verificar.

$ echo find . -name "*.py" -print
find . -name *.py -print

$ echo find . -name *.py -print
find . -name foobar.py barfoo.py -print

Sem as aspas, o shell expandiu *.py , portanto, find obtém argumentos diferentes, o que gera resultados diferentes.

Você deve sempre citar * quando quiser que um comando veja * literalmente. Caso contrário, o comportamento será errático (o comando funcionará, desde que não haja arquivos *.py para o shell expandir).

    
por 13.08.2013 / 23:25
2

Porque o shell expande o curinga quando você não protege o padrão.

Você sempre tem que usar algumas citações.

    
por 13.08.2013 / 23:15