ฉันจะคัดลอกแบบวนซ้ำcp -rf *
แต่ไม่รวมไดเรกทอรีที่ซ่อนอยู่ (ไดเรกทอรีที่ขึ้นต้นด้วย) และเนื้อหาได้อย่างไร
ฉันจะคัดลอกแบบวนซ้ำcp -rf *
แต่ไม่รวมไดเรกทอรีที่ซ่อนอยู่ (ไดเรกทอรีที่ขึ้นต้นด้วย) และเนื้อหาได้อย่างไร
คำตอบ:
คุณสามารถคัดลอกทุกอย่างด้วย
cp -rf
จากนั้นลบไดเรกทอรีที่ซ่อนอยู่ที่ปลายทางด้วย
find -type d -name '.*' -and -not -name '.' -print0 | xargs -0 rm -rf
อีกวิธีหนึ่งถ้าคุณมี tar ขั้นสูง (เช่น GNU tar) คุณสามารถลองใช้ tar เพื่อแยกรูปแบบบางอย่างออก แต่ฉันกลัวว่าเป็นไปไม่ได้ที่จะยกเว้นเฉพาะไดเรกทอรีที่ซ่อนอยู่ แต่รวมถึงไฟล์ที่ซ่อนอยู่
ตัวอย่างเช่นสิ่งนี้:
tar --exclude=PATTERN -f - -c * | tar -C destination -f - -x
Btw, GNU tar มีสวนสัตว์ที่ไม่รวมตัวเลือกรูปแบบ สิ่งที่ฉันชอบคือ
--exclude-vcs
ตัวเลือกที่ดีสำหรับการคัดลอกแผนผังไดเรกทอรียกเว้นไฟล์บางไฟล์คือ:
rsync : นี่คือ cp โดยทั่วไปบวกกับความเป็นไปได้มากมาย
rsync -a --exclude='.*' /source/ /destination
pax : มีความสามารถในการแยกบางส่วนและอยู่ใน POSIX ดังนั้นจึงควรมีอยู่ทุกที่ (ยกเว้นว่าลีนุกซ์บางรุ่นไม่ได้รวมไว้ในการติดตั้งเริ่มต้นด้วยเหตุผลบางประการ)
cd /source && mkdir -p /destination && \
pax -rw -pp -s '!.*/\..*!!' . /destination
อีกทางเลือกหนึ่งที่จะcp
คุณสามารถใช้กับrsync
--exclude=PATTERN