How can I use xargs to copy files that have spaces and quotes in their names?
You can combine all of that into a single find
command:
find . -iname "*foobar*" -exec cp -- "{}" ~/foo/bar \;
This will handle filenames and directories with spaces in them. You can use -name
to get case-sensitive results.
Note: The --
flag passed to cp
prevents it from processing files starting with -
as options.
find . -print0 | grep --null 'FooBar' | xargs -0 ...
I don't know about whether grep
supports --null
, nor whether xargs
supports -0
, on Leopard, but on GNU it's all good.
The easiest way to do what the original poster wants is to change the delimiter from any whitespace to just the end-of-line character like this:
find whatever ... | xargs -d "\n" cp -t /var/tmp