#pragma section-numbers off

CategoryComputingTips > FileUtilsCompTips

== FileUtils Tips ==

=== Using find ===

 * find is really useful and once you get the hang of it you probably want to use the -exec thing but this it isn't hugely clear that you have to escape the terminating ; from the shell.  You use {} to substitute for the name of the file found.
{{{
find . -name '*.c' -exec echo foo {} \;
}}}
 * You can also use xargs for this to save spawning one process for each file.
{{{
find . -name '*.c'|xargs grep foobar
}}}
 * When your filenames have spaces in and you want to use find and xargs together use the -print0 and -0 flags to null terminate the strings find passes to xargs and conversely so xargs knows it's gettings null terminated input.
{{{
find . -name '*.c' -print0|xargs -0 grep foobar
}}}