não é recursivo quando o arquivo está no topo

7

Imagine uma árvore de fontes. Existem arquivos xml em todos os lugares.

Mas como existe um XYZ.xml na raiz desta árvore, ele não encontrará meus arquivos xml.

find -iname *.xml

retorna

./XYZ.xml

em vez de

./XYZ.xml
./a/b/c/bob.xml
./b/d/top.xml
    
por Olivier Toupin 29.05.2011 / 02:55

4 respostas

15
find -iname '*.xml'

Caso contrário, seu shell expande *.xml para XYZ.xml e o comando que realmente é executado é

find -iname XYZ.xml

O motivo pelo qual funciona se não houver arquivos XML no diretório atual é que os shells geralmente deixam os curingas não expandidos se não corresponderem a nada. Em geral, sempre que quiser que curingas sejam expandidos por um programa diferente do shell (por exemplo, find , tar , scp , etc.), é necessário citá-los para que o shell não tente expandir eles mesmos.

    
por 29.05.2011 / 03:30
6

Você precisa citar seu argumento assim:

find ./ -name '*.xml'

para que seja passado para localizar em vez de ser expandido pelo shell e, em seguida, transmitido para ser encontrado como a versão expandida.

    
por 09.06.2011 / 15:10
-1

Isso funciona no Solaris 10:

find /directory-to-search/* -prune -name "*gz"

    
por 15.02.2013 / 17:52
-2

Por favor, tente:

find ./ -name *.xml
    
por 09.06.2011 / 15:04