Celui-ci est correct:
$ find . -name *main.o
./main.o
Alors, pourquoi je ne trouve pas *.o
?
$ find . -name *.o
find: paths must precede expression: main.o
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
Il y a probablement plus d'un fichier qui correspond à *.o
, alors qu'un seul fichier correspond à *main.o
, aussi, dans le premier cas, l'extension du shell s'exécute:
$ find . -name main.o
et ça marche. Dans le second cas:
$ find . -name file1.o main.o
Et c'est pourquoi vous avez une erreur.
Pour éviter cela, vous devez citer expression
dans les deux commandes:
$ find . -name '*.o'
$ find . -name '*main.o'
Mettez le modèle de fichier entre guillemets. Sinon, * est développé par le Shell (résolu en une liste de fichiers avant que find ne le voit), ce qui crée une confusion.
find . -name "*.o"