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.