@Joseph R.'nin cevabından başlayarak, komutun çalışmasını sağlayamadığım için bulmayla çalışmasını sağlamak için bu benim çözümüm. (Bunun geçerli olduğunu düşünmüyorum, çünkü uygulanan kurallar \+
: {}
öğeden sonra hiçbir şey olamaz .) (Yorum yapamadım. Bu paragrafın tamamı kaldırılabilir.)
Tüm dosyaları tam olarak aynı dizine kopyalamak için (burada target/directory
):
find directory/to/copy -type f -exec install -Dm 755 "{}" "target/directory" \;
-D
burada zorunlu değildir, sadece hedefe var olmayan dizinleri oluşturur.
Şu anda bulunduğunuz yerden başlayarak bir dizin hiyerarşisinin tamamını ve dosyalarını (bu, boş dizinleri atlar) kopyalamak için:
find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \;
Söylendiği gibi, bu ağaçtan itibaren yeniden yaratacaktır $PWD
. Eğer boş bir dizin kopyalamak gerekiyorsa Ayrıca, kullandığınız bir yolunu bulabiliriz -type d
arasında find
ve install -d
.
Yani, ağacı kopyalamak için olmayan bir dizinden başlayarak $PWD
:
(cd parent/directory && find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \;)
Nasıl parent/directory
kopyalanmadığına dikkat edin .
Ekstra
Kullananlar için shell/fish
, aynı şeyi yapan çizgi:
fish -c 'cd parent/directory; and find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \\;'