File search: how to decide what you need

Choosing how to search for files usually starts as a shopping question. Which app, which shortcut, which index. That framing tends to end with a tool installed and the same lookups still failing, because the failures were never about raw capability. They were about a mismatch between what gets typed and what the tool was built to answer. Deciding well means writing down the requirement first, in a form specific enough that most candidates disqualify themselves before anything is installed.

The decision is about cases, not about apps

A Mac already ships with several ways to find a file, and installing another one adds a fourth or fifth. The useful question is not which is best in general. It is which case keeps costing time.

There are only a handful of cases in practice. Something arrived this week and has already slid out of view. Something from months ago has to be produced for a specific reason. A set of files matching a rule has to be collected, not just located. A file is known to exist somewhere outside the internal disk, on an external drive or a share. Each of these puts different pressure on a tool, and a tool that handles one beautifully can be useless for another.

Writing the case down in a sentence forces the requirement into the open. "Find last week's export after the download folder has swallowed it" is a scope and sort problem. "Produce every invoice sent to one client in the last two years" is a saved query problem. "Gather all the raw footage above a size threshold and move it" is a shell problem, since the finding is the smaller half of the job.

The cases also have different lifespans. The one about this week's download disappears if the arrangement of incoming files changes, so buying a tool for it solves a problem that a folder rule would have removed. The one about producing two years of invoices does not go away with any amount of tidying, because it depends on a query across a large set. Sorting the list this way shows which entries deserve a tool at all.

Skipping this step is what produces a Mac with three search tools on it. Each was installed for a case that was never stated, so none of them ever gets retired, and the daily lookup habit stays exactly where it was.

Three questions that settle most of it

Most of the decision falls out of three answers.

What is remembered at the moment the hunt starts? A name fragment, a date, a file type, a phrase from inside the document, or only the place it was put. That answer determines which attribute the query has to run on, and a tool that cannot query that attribute is not a candidate regardless of how fast it is.

How often does this case happen? Something that happens twice a year does not justify a background process and a second index. Something that happens several times a day justifies changing the arrangement of the files themselves, not just the query. The frequency also decides whether a saved query is worth keeping, since saved queries are only worth their upkeep when the criteria stay fixed and the contents change.

Does the search have to leave the internal disk? External drives, network shares, and files stored in the cloud with only a placeholder on disk each behave differently. This is the question most often skipped, and it is the one most likely to invalidate a choice after the fact, because a tool that never reaches the volume in question cannot be configured into reaching it.

Answering the three takes a few minutes and removes most of the candidate list. What remains is usually one index based option and one that reads the filesystem directly.

A fourth question is worth asking only when the first three leave a tie: what happens to the result once it appears. Some lookups end with a file being opened, and for those any tool that shows a row is enough. Others end with a batch operation across dozens of matches, and those are settled by whether the result can be handed to the next command without being selected by hand. A tie between two candidates almost always breaks on this point rather than on search quality.

Requirements that only surface after installation

Some requirements are invisible until a tool is already in place, which is why they belong on the list before the download.

Permissions come first. macOS gates access to several locations per app, and a search tool that has not been granted access to a folder simply returns nothing from it. The failure looks identical to a missing file. Anyone who dismissed a permission prompt reflexively will meet this later as an inexplicable blind spot, so checking which folders a candidate can actually read is part of evaluating it.

Reach is second. Whether a tool indexes external drives, whether it sees network shares at all, and what it does with files that exist as cloud placeholders rather than local data. mdutil -s /Volumes/DiskName reports in one line whether the system index covers a mounted volume, and a volume reporting that indexing is disabled will not produce results in anything built on that index.

Scriptability is third and is the one most often undervalued. If the result of a search has to become an action, a tool that only paints rows in a window forces the work to be done twice: once to find, once to act. A command that prints paths can be piped into a move, a rename, or an archive step in the same line.

Last is what happens on the next macOS release. Tools that hook deeply into the system are the ones that break on upgrade, and a broken search tool tends to be discovered at the worst moment. A candidate with a plain, documented mechanism carries less of this risk than one that does something clever and undocumented.

Index or walk, the trade that does not go away

Every option resolves into one of two mechanisms, and the trade between them is permanent.

Index based Filesystem walk
Speed Answers immediately Scales with the number of entries
Freshness Depends on indexing having run Always current
Blind spots Excluded folders, unindexed volumes, archive contents Only what the permissions block
Setup cost A first pass that can take a while None
After the result Rows to read Paths to pipe into the next command

Neither column wins. A zero result from the index means the item is not in the catalogue, which is not the same statement as the file being absent. A zero result from a walk over a stated directory means the file is not there, which is a conclusion strong enough to act on. That difference matters most in the exact moment it is needed, when the question is whether something was deleted.

The workable arrangement for most setups is one of each, with a clear rule for which comes first. Broad and vague goes to the index. Narrow and known goes to the walk. mdfind -onlyin ~/Projects contract sits in the middle, using the catalogue while pinning the scope, which is often the fastest phrasing for a question that has a known home folder.

Test candidates on five past failures

Evaluating a search tool by typing a word that obviously works proves nothing. Every candidate passes that test. The useful test uses failures that already happened.

Collect five files that were genuinely hard to find in the last month. Real ones, including the frustrating one that took twenty minutes. Then run each candidate against all five and record three things: how many times the query had to be retyped, how long it took to pick the right row out of the results, and whether the next step of the work could start immediately or required moving to another window.

The third measurement is the one that separates similar tools. Two options can return the same rows in the same time and still differ by a wide margin in what happens next, because one hands over a path that the following command can use and the other hands over a selection in a window. Across a working week, that gap is larger than any difference in query speed.

Run the test on a normal working day rather than on a quiet evening. A search tool behaves differently while a sync client is pulling files down, a build is writing output, or a backup is running, and those are the conditions under which the tool will actually be used. A candidate that answers instantly on an idle machine and stalls during a sync is not a faster tool. It is a tool measured under the wrong conditions.

If three of the five failures happen in the same place across every candidate, the tool is not the variable. The query is running on the wrong attribute, or the file lives somewhere none of them can reach. That result is worth more than a purchase decision, because no amount of switching would have fixed it.

Costs that never appear on a feature list

Feature comparisons are built from what a product can do, which leaves out most of what a choice actually costs.

A tool that maintains its own index runs a process and stores a database, and it has to be fed changes to stay accurate. That is defensible when it buys something the system index cannot provide. It is pure overhead when it duplicates what is already there.

Saved queries and tag schemes create a quieter cost: the arrangement stops being portable. Work that lives inside one application's saved searches has to be rebuilt if that application is ever retired, which is worth accepting deliberately rather than by accident. Naming conventions and folder structure survive any change of tool, which is why the cheapest improvements usually happen at the point a file arrives rather than at the point it is sought.

Storage is a smaller cost but an easy one to forget. A private index over a large home directory occupies real space, and on a machine already short on room, the tool meant to find files ends up competing with the files. Checking how much the catalogue grows after the first full pass takes one look at the folder it lives in, and it is worth doing before the trial period ends rather than after.

Then there is the cost of keeping a decision open. Running three search tools because none was ever ruled out means every lookup begins with a small choice, and small choices repeated dozens of times a day are their own tax. Picking one for each mechanism and uninstalling the rest is often the single change that makes the most difference.

What to change first

State the one case that keeps costing time, then check whether the current tool can even query the attribute that case depends on. If it cannot, no configuration will help and the requirement is now clear enough to shop against. The mechanism split is laid out on Compared with other file managers, the scope of what one window handles is on Features, and the permission and reach questions that decide most shortlists are answered on the FAQ.

Frequently asked questions

How many search tools are actually needed on a Mac?

Usually two: one that queries an index and one that reads the filesystem directly, since their blind spots are opposites. Two tools that both depend on an index tend to return the same results and miss the same files, which adds maintenance without adding reach.

What should be checked before installing a file search app?

Which folders it is permitted to read, whether it reaches external drives and network shares, and whether it can be called from the command line. Those three decide most outcomes, and all of them are hard to change after the fact if a candidate simply does not support them.

Why does a search return nothing when the file definitely exists?

An index based search returning nothing means the item is not in the catalogue, which can be caused by a privacy exclusion, indexing being disabled on the volume, or the file sitting inside an unopened archive. Repeating the same query with a direct filesystem walk distinguishes a catalogue problem from a missing file.

Are saved searches worth setting up?

They pay off when the criteria stay fixed and the matching files keep changing, such as documents modified this month or drafts untouched for thirty days. A one time hunt saved as a query only adds something else to maintain, so the test is whether the same question gets asked again next month.

Back to all posts