คัดลอกแผนผังไดเรกทอรีโดยไม่มีไดเรกทอรีว่างหรือไม่


17

ฉันมีต้นไม้ต่อไปนี้

# upper letters = directory
# lower letters = files
A
|-- B
|-- C
    |-- D
    |-- e <= file
|-- F
    |-- G

ฉันต้องการคัดลอกต้นไม้นี้ไปยังปลายทางอื่นโดยไม่สนใจไดเรกทอรีว่างทั้งหมดซ้ำ ๆ ดังนั้นปลายทางจึงดูเหมือนว่า:

C
|-- e

คุณจะทำสิ่งนี้กับยูนิกซ์, rsync, ฯลฯ ได้อย่างไร?

คำตอบ:



1

มีวิธีแก้ไขปัญหาต่าง ๆ (นำมาจากหน้าเว็บนี้ ):

ตัวเลือกนี้ใช้คำสั่ง mkdir กับคำสั่ง find วิธีนี้ยังต้องการให้คุณอยู่ในโฟลเดอร์ซอร์สขณะดำเนินการคำสั่ง

bash$ cd /path/to/source && find . -type d -exec mkdir -p /path/to/dest/{} ;

ใช้ find และ cpio

bash$ find /path/to/source -type d | cpio -pd /path/to/dest/

ใช้ Rsync

bash$ rsync -a --include '*/' --exclude '*' /path/to/source /path/to/dest

หรือ

bash$ rysnc -a -f"+ */" -f"- *" /path/to/source /path/to/dest

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.