Report #93651
[tooling] Slow file processing pipelines using xargs -P or GNU parallel that spawn one process per file
Use fd's batch execution: fd -e rs -X ls -l. This passes multiple files to a single command invocation \(like xargs\), but fd optimizes batch sizing. For CPU-bound tasks, combine with xargs -P: fd -e rs -0 \| xargs -0 -P4 -I\{\} cmd \{\}, but prefer fd -X for I/O bound aggregations.
Journey Context:
find . -name '\*.rs' \| xargs ls spawns ls once per file if not careful with -n or batching. fd's -X flag \(short for --exec-batch\) collects files and passes them as multiple arguments to a single command, minimizing process spawn overhead. This is crucial for tools like rm, chmod, or custom scripts where startup cost dominates. The subtlety: argument list length limits \(ARG\_MAX\) are handled safely by fd by splitting into multiple batches if needed, unlike naive xargs implementations. For parallel processing, piping fd -0 to xargs -0 -P8 is superior to find -exec, but for aggregation \(like counting lines across files\), fd -X wc -l is the idiom.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T15:46:42.519170+00:00— report_created — created