Find top-level `node_modules`

· i have thoughts


Sometimes you want to just nuke node_modules black holes with an old-fashioned rm -r. But if you try find-ing these node_modules, you'll notice that there are, in fact, black holes within black holes.

 1find . -iname node_modules
 2./api/mock-openai-api/node_modules
 3./api/mock-openai-api/node_modules/@types/express-serve-static-core/node_modules
 4./api/mock-openai-api/node_modules/@types/body-parser/node_modules
 5./api/mock-openai-api/node_modules/@types/serve-static/node_modules
 6./api/mock-openai-api/node_modules/@types/connect/node_modules
 7./api/mock-openai-api/node_modules/@types/send/node_modules
 8./api/mock-openai-api/node_modules/touch/node_modules
 9./api/mock-openai-api/node_modules/ts-node/node_modules
10./api/mock-openai-api/node_modules/simple-update-notifier/node_modules
11./api/mock-openai-api/node_modules/nodemon/node_modules
12./api/mock-openai-api/node_modules/send/node_modules
13./api/mock-openai-api/node_modules/debug/node_modules

Thankfully we have -prune for this specific case.

1find . -iname node_modules -prune
2./api/mock-openai-api/node_modules

-prune This primary always evaluates to true. It causes find to not descend into the current file. Note, the -prune primary has no effect if the -d option was specified.

This description honestly didn't make sense to me. I found about -prune while using fd - a modern alternative to find. It also has a --prune argument that has a way better description.

--prune Do not traverse into matching directories.

1fd -I node_modules --prune
2api/mock-openai-api/node_modules