cp -r โดยไม่มีไฟล์ที่ซ่อนอยู่


90

ฉันมีสองไดเรกทอรีและหนึ่งว่างเปล่า

ไดเร็กทอรีแรกมีไดเร็กทอรีย่อยจำนวนมากที่มีไฟล์ซ่อนอยู่ เมื่อฉันcp -rเนื้อหาจากไดเร็กทอรีแรกไปยังไดเร็กทอรีที่สองไฟล์ที่ซ่อนอยู่จะถูกคัดลอกไปด้วย วิธีแก้ปัญหาใด ๆ เพื่อหลีกหนีพวกเขา?


ทำได้ แต่การลบออกหลังจากการคัดลอกอาจจะง่ายกว่า
— Karoly Horvath

6
ใช่ แต่การจัดการไฟล์ที่ซ่อนไปยังตำแหน่งอื่นเป็นอันตรายต่อความปลอดภัยในกรณีของฉัน
— ราหุล

คำตอบ:


129

คุณสามารถใช้ rsync:

rsync -av --exclude=".*" src dest

1
ค่าโสหุ้ยใด ๆ เมื่อเทียบกับ cp?
— ราหุล

2
@ Rahul มันไม่ได้เกิดขึ้นกับฉันเพื่อเปรียบเทียบ แต่ฉันคิดว่าคุณไม่ควรกังวลเรื่องนั้น
— Eugene Yarmash

3
มันใช้งานได้ดี! ขอบคุณ! สำหรับข้อมูล rsync จะดีมากเมื่อขนาดไฟล์ใหญ่ แต่เท่ากับ cp ในกรณีที่ไฟล์เล็กกว่า
— ราหุล

28

คุณทำได้

cp -r SRC_DIR/* DEST_DIR

เพื่อยกเว้น. file และ. dirs ทั้งหมดในระดับ SRC_DIR แต่ก็ยังคงคัดลอกไฟล์ที่ซ่อนอยู่ในระดับถัดไปของไดเรกทอรีย่อย


6
นั่นแหละคือปัญหา .. :)
— ราหุล

9
แต่ใช้ได้กับ GIT-Repos หากคุณไม่ต้องการคัดลอก GIT-Index ทั้งหมดใน. git / ...
— Sedat Kilinc

1
ฉัน + 'คำตอบนี้เพราะนี่คือคำตอบที่ฉันกำลังมองหา ฉันไม่ต้องการแยกสิ่งที่มองไม่เห็นทั้งหมดออกจากต้นไม้เพียงแค่สิ่งที่มองไม่เห็นในระดับรูทเท่านั้น!
— l008com

ตัวแปรcp SOURCE/[!.]* TARGETอื่น
— Carel

4

rsyncมีตัวเลือก "-C"

http://rsync.samba.org/ftp/rsync/rsync.html

ตัวอย่าง:

rsync -vazC  dir1 dir2

คุณพูดถูก ฉันลองmkdir -p dir1 / subdir; สัมผัส dir1 / subdir / .cvs; rsync -avzC dir1 dir2
— slitvinov

rsync -av --exclude = ". *" src dest ใช้งานได้ดี อ้างอิงคำตอบข้างต้นโดย eugene ขอบคุณต่อไป! :)
— ราหุล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.