Diferença entre \*.xml e *.xml no comando find

Diferença entre \*.xml e *.xml no comando find

Qual é a diferença entre \*.xmle *.xmlno comando find no Linux/mac

Os resultados de:

find . -name \*.xml and find . -name *.xmlsão diferentes. Mas por que?

Além disso, é locate '*.xml'melhor do que encontrar? Qual é o mais comumente usado?

Responder1

Ao escapar do asterisco, você fornece finda string literal *.xmlcorrespondente, que pode ser analisada como um curinga internamente, independentemente do shell. Se você não conseguir escapar ou citar o asterisco, ele será expandido pelo shell antes de ser tocado pelo findcomando.

Por exemplo, se você tivesse apenas um arquivo somefile.xmlem seu diretório, o shell expandiria o curinga e passaria a string literal somefile.xmlpara o seu comando. ou seja:

sh-4.1$ find . -name *.xml

seria exatamente equivalente a:

sh-4.1$ find . -name somefile.xml

que corresponderia apenas ao nome exato do arquivo. Se você tiver dois arquivos em seu diretório que correspondam ao *.xmlcuringa, provavelmente receberá um erro de sintaxe quando o curinga for expandido:

sh-4.1$ find . -name somefile.xml someotherfile.xml
find: paths must precede expression: someotherfile.xml
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

Quanto a ser locatemelhor ou não, isso realmente depende da finalidade para a qual você o está usando. Embora locateseja muito mais rápido, ele depende de um índice pré-construído, por isso é tão bom quanto a atualização mais recente do índice (geralmente feita diariamente, mas isso depende da distribuição). Além disso, ele retorna apenas resultados com base nas correspondências de nomes de arquivos, ao mesmo tempo que findpermite uma infinidade de opções para refinar sua pesquisa.

informação relacionada