def do_child_matches(self, params):
        """
\x1b[1mNAME\x1b[0m
        child_matches - Prints paths that have at least 1 child that matches <pattern>

\x1b[1mSYNOPSIS\x1b[0m
        child_matches <path> <pattern> [inverse]

\x1b[1mOPTIONS\x1b[0m
        * inverse: display paths which don't match (default: false)

\x1b[1mEXAMPLES\x1b[0m
        > child_matches /services/registrations member_
        /services/registrations/foo
        /services/registrations/bar
        ...

        """
        seen = set()

        # we don't want to recurse once there's a child matching, hence exclude_recurse=
        for path in self._zk.fast_tree(params.path, exclude_recurse=params.pattern):
            parent, child = split(path)

            if parent in seen:
                continue

            match = params.pattern in child
            if params.inverse:
                if not match:
                    self.show_output(parent)
                    seen.add(parent)
            else:
                if match:
                    self.show_output(parent)
                    seen.add(parent)