A partir de la respuesta de @Joseph R., esta es mi solución para que funcione con find, ya que no pude hacer que su comando funcione. (No creo que lo haga, debido a las reglas que se aplican a \+: no puede haber nada después del{} elemento). (No pude comentar. Todo este párrafo se puede eliminar realmente).
Para copiar todos los archivos en el mismo directorio exacto (aquí target/directory):
find directory/to/copy -type f -exec install -Dm 755 "{}" "target/directory" \;
-D no es obligatorio aquí, solo creará los directorios no existentes para el destino.
Para copiar una jerarquía de directorios completa y sus archivos (esto omitirá los directorios vacíos) comenzando desde donde se encuentra actualmente:
find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \;
Como se dijo, esto recreará el árbol a partir de $PWD. Además, si necesita copiar el directorio vacío, en podría encontrar una manera usando el -type dde findyinstall -d .
Entonces, para copiar el árbol, comenzando desde un directorio que no es $PWD:
(cd parent/directory && find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \;)
Observe cómo parent/directoryno se copia.
Extra
Para aquellos que usan shell/fish, aquí está la línea que hace lo mismo:
fish -c 'cd parent/directory; and find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \\;'