Mulai dari jawaban @Joseph R., ini adalah solusi saya untuk membuatnya bekerja dengan find, karena saya tidak bisa membuat perintahnya berfungsi. (Saya rasa tidak, karena aturan yang berlaku untuk \+: tidak ada apa-apa setelah {}elemen.) (Saya tidak bisa berkomentar. Seluruh paragraf ini sebenarnya bisa dihapus.)
Untuk menyalin semua file ke direktori yang sama persis (di sini target/directory):
find directory/to/copy -type f -exec install -Dm 755 "{}" "target/directory" \;
-D tidak wajib di sini, itu hanya akan membuat direktori yang tidak ada ke target.
Untuk menyalin seluruh hierarki direktori dan file-nya (ini akan menghilangkan direktori kosong) mulai dari tempat Anda saat ini:
find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \;
Seperti yang dikatakan, ini akan membuat ulang pohon mulai dari $PWD. Juga, jika Anda perlu menyalin direktori kosong, di dapat menemukan cara menggunakan -type ddari finddan install -d.
Jadi, untuk menyalin pohon, mulai dari direktori yang bukan $PWD:
(cd parent/directory && find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \;)
Perhatikan bagaimana parent/directorytidak disalin.
Tambahan
Bagi mereka yang menggunakan shell/fish, inilah baris yang melakukan hal yang sama:
fish -c 'cd parent/directory; and find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \\;'