This one is correct:
$ find . -name *main.o ./main.o
So, why I can't find
$ 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]
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.Sign up to join this community
Probably there are more than one file that match
*.o, while only one file match
*main.o, so, in the first case, shell expansion runs:
$ find . -name main.o
and this works. In the second case:
$ find . -name file1.o main.o
And this is why you got error.
In order to prevent this, you should quote
expression in both command:
$ find . -name '*.o' $ find . -name '*main.o'