Imaginez un arbre source. Il y a des fichiers xml partout.
Mais comme il y a un XYZ.xml à la racine de cet arbre, il ne trouvera pas mes fichiers xml.
find -iname *.xml
renvoie
./XYZ.xml
au lieu de
./XYZ.xml
./a/b/c/bob.xml
./b/d/top.xml
Réponse acceptée :
find -iname '*.xml'
Sinon, votre shell développe *.xml
vers XYZ.xml
, et la commande qui est réellement exécutée est
find -iname XYZ.xml
La raison pour laquelle cela fonctionne s'il n'y a pas de fichiers XML dans le répertoire courant est que les shells laissent généralement les caractères génériques non développés s'ils ne correspondent à rien. En général, chaque fois que vous souhaitez que les caractères génériques soient développés par un programme autre que le shell (par exemple, par find
, tar
, scp
, etc.) vous devez les mettre entre guillemets afin que le shell n'essaie pas de les développer lui-même.