A municipal legacy explorer must find all callers of calculate_fee across packages. Which built-in tool fits best?
Select an answer to reveal the explanation.
Short Explanation
Need every place calculate_fee shows up? Grep is the metal detector for code content—wave it across packages instead of guessing folders.
Full Explanation
Locating all callers of a symbol across packages is a content-search problem. For a municipal legacy explorer that must find every reference to calculate_fee, the appropriate built-in is Grep: it searches file contents for the identifier across the civic codebase and returns matching paths and lines for follow-up Reads.
Why the correct option works: Grep is designed for textual occurrence search. Fee logic in legacy stacks is often spread across billing, permits, and shared utilities; content search finds imports, stringly-typed calls, and comments that path-only tools miss. Results then drive targeted Read/Edit rather than blind rewrites.
Why the other three fail by concept: Write creating empty files wherever calculate_fee might appear does not search and pollutes the tree. Bash with rm -rf on packages that might reference the function is destructive and not a search strategy. Edit without reading to rewrite every fee string blindly modifies without understanding call sites and risks breaking unrelated civic fee flows.
Exam caveat: Grep finds textual matches—it does not replace typed reference tools in every language, but among the built-ins given it is the correct content-search choice. Operational check: run Grep for calculate_fee across packages, open hits with Read, and confirm the explorer’s report lists real callers before any Edit.