> Or maybe you pipe into xargs and pray your filenames don’t have spaces…
Always use -0. Most gnu utilities support it. It makes them put a null byte after every filename instead of a newline. Completely eliminates the problem of dealing with whitespace in the filenames.
As well as find has an -exec param to perform things one at a time or all with the same command by using a slash semicolon or a plus sign respectively:
#order files from different levels in a file hierarchy by size:
find . -type f -maxdepth 1 -exec ls -hlrS {} +
#output metadata for each file sequentially
find . -type f -maxdepth 1 -exec file {} \;
Neat, I didn’t know that! Even cooler that they’ve started to change all the core utilities to error out instead of creating a file with a newline character in it.
I think the parent was referring to using awk/sed to do the equivalent of:
find ... | tr '\n' '\0' | xargs -0 ...
I.e., a blind replacement without the tool having any particular semantic understanding of what it's translating.
That still requires your xargs to have -0 support, though, and I'd be surprised to have that without the corresponding option on find. But I've done this before when feeding xargs from something other than find.
Always use -0. Most gnu utilities support it. It makes them put a null byte after every filename instead of a newline. Completely eliminates the problem of dealing with whitespace in the filenames.