ดีที่อูบุนตูcp
มีคุณสมบัตินี้ แต่ถ้าคุณควรจะพบว่าตัวเองอยู่ในเครื่องที่ไม่ได้เป็น (BSD สไตล์cp
ไม่เช่นดังนั้น OS X ไม่ได้อย่างใดอย่างหนึ่ง) find
ก็ง่ายมากที่จะทำอย่างไรกับ นี่มันเป็นสองซับ (สำหรับการอ่าน):
% cd original_dir
% find . -type d -exec mkdir -p ../copy_dir/{} \;
% find . -type f -exec touch ../copy_dir/{} \;
หากcopy_dir
มีอยู่แล้วคุณสามารถข้าม-p
ข้อโต้แย้งไปได้mkdir
เนื่องจากfind
จะข้ามแผนผังไดเรกทอรีจากบนลงล่าง สำหรับงานที่มีขนาดใหญ่คุณสามารถลบมิลลิวินาทีอื่นออกได้โดยการยกเลิกคำสั่งด้วย+
แทนที่จะเป็น\;
ถ้าคุณfind
รองรับมัน (อาจเป็นไปได้)
แก้ไข:คำสั่งด้านบนถูกละเลยเพื่อจัดการลิงก์สัญลักษณ์ซึ่งสามารถคัดลอกได้ด้วยการรันครั้งที่สามของfind
( อย่ายกเลิกอันนี้ด้วย+
)
% find . -type l -exec cp -R {} ../copy_dir/{} \;