On Thu, 2006-06-22 at 07:21, Robert wrote:
Can someone explain why this:
find . -depth -print0 | cpio --null -pmd /tmp/test
will copy all files in and below the current directory -and- this:
find . -depth -print | grep -v .iso$ | wc -l
will count all the non-iso files -and- this:
find . -depth -print | grep .iso$ | wc -l
will count *only* the iso files -but- this:
find . -depth -print0 | grep -v .iso$ | cpio --null -pmd /tmp/test
doesn't copy *anything*?
Any suggestions for a work-around would also be most welcome.
This doesn't have much to do with bash except that you
could easily see the answer if you left off the last element
of that last pipeline so you could see the output from
grep. You are feeding grep one long line with null
terminated filenames when it wants things one separate
lines. You can let find do the selection:
find . -depth ! -name '*.iso' -print0 | cpio ...
but I'd probably:
rsync -av --exclude '*.iso' . /tmp/test
instead.