"Find: Missing Argument to `-Exec'" When Using "-Exec Rm -F {}\"

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?

4

2 Answers

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 \;.

1

You can simply

find . -type f -name 'IMAGE1806.jpg' -delete

From the man page:

Delete files; true if removal succeeded.  If the removal failed,
an  error message is issued.  If -delete fails, find's exit sta‐
tus will be nonzero (when it eventually exits).  Use of  -delete
automatically turns on the -depth option.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Elena Rostova

Elena Rostova

Lead Health, Wellness & Medical Journalist

Elena Rostova holds a Master's degree in Public Health Journalism. She covers groundbreaking medical research, holistic wellness trends, mental health awareness, and nutritional science.

Share this article
Twitter Facebook Pinterest