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