"find: missing argument to `-exec'" when using "-exec rm -f {}\"
Solution 1:
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 \;
.
Solution 2:
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.