# Ubuntu – how to have ‘find’ not return the current directory

find

I'm currently trying to find (and copy) all files and folder structure matching a specific pattern, in a specified directory and I'm so nearly there!

Specifically, I want to recursively copy all folders not begining with a '_' character from a specified path.

find /source/path/with/directories -maxdepth 1 -type d ! -name _\* -exec cp -R {} /destination/path \;


In the /source/path/with/directories/ path are machine-specific directories beginning with '_' and others, and I'm only interested in copying the others. For a reason beyond me, the find command returns the /source/path/with/directories/ directory, and therefore copies its content, directories begining with '_' included.

Anyone have a hint as to why that is?

Thanks,

Pascal

find returns the root path because it matches your criteria—i.e. it is a directory, and it doesn't start with _.

You're looking for -mindepth 1, I suspect:

$cd /tmp$ mkdir a
$touch a/b$ mkdir a/c
$touch a/c/d$ find a
a
a/b
a/c
a/c/d
\$ find a -mindepth 1
a/b
a/c
a/c/d


Reference: find manpage