Piping find -name to xargs results in filenames with spaces not being passed to the command
You can tell find
and xargs
to both use null terminators
find . -name "*.txt" -print0 | xargs -0 rm
or (simpler) use the built-in -delete
action of find
find . -name "*.txt" -delete
or (thanks @kos)
find . -name "*.txt" -exec rm {} +
either of which should respect the system's ARG_MAX
limit without the need for xargs
.