A possible way might be to work inside the GCC compiler. You could use the MELT domain specific language for that. It provides easy matching on Gimple internal representation of GCC.
It is more complex than textual solutions, but it would also find e.g. calls to system inside functions after inlining and other optimizations.
So customizing the GCC compiler is probably not worth the effort for your case, unless you have a really large code base (e.g. million of lines of source code).
In a simpler textual based approach, you might pipe two greps, e.g.
grep -rwn system * | grep -w rm
or perhaps just
grep -rn 'system.*rm' *
BTW, in some big enough software, you may probably have a lot of code like e.g.
char cmdbuf[128];
snprintf (cmdbuf, sizeof(cmdbuf), "rm %s", somefilepath);
system (cmdbuf);
and in that case a simple textual grep based approach is not enough (unless you inspect visually surrounding code).
grep -r 'system("rm'rmdiror similar should be rare anyway.system("rm