Ubuntu – “find: missing argument to `-exec’” when using “-exec rm -f {}\”

command linefind

I run this command:

~/shell_temp$ find . -type f -name "IMAG1806.jpg" -exec rm -f {}\

i got output below:

> IMAG1806.jpg

Error:
find: missing argument to `-exec'

what is exact command for find any file from current directory and remove with -exec?

Best Answer

You missed the a ; at the end (and a space too between {} and ;). The correct command is:

find . -type f -name "IMAG1806.jpg" -exec rm -f {} \;

; indicates the end of -exec predicate of find.

Also note that we have used \; i.e. \ in front of ; to escape the interpretation of ; by shell, otherwise shell will treat ; as end of the whole find command and find will throw the same error. You can also use ';' instead of \;.

You were using \ at the end, this indicates your shell will continue to take input via PS2 (indicated by >), you typed IMAG1806.jpg again, so the whole command becomes:

find . -type f -name "IMAG1806.jpg" -exec rm -f {}IMAG1806.jpg

As you can see this is not a valid command at all with IMAG1806.jpg at the end, no closing of -exec predicate and without a space between {} and \;.