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 d
dari find
dan 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/directory
tidak 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/{}" \\;'