Symlink ไฟล์ทั้งหมด แต่คัดลอกส่วนขยายบางอย่าง


2

ฉันสงสัยว่าฉันจะเชื่อมโยงไฟล์ทั้งหมดในโครงสร้าง dir ได้อย่างไรและจากนั้นก็คัดลอกไฟล์ของส่วนขยายที่แน่นอนใน dir นั้น ฉันกำลังเชื่อมโยงไฟล์ทั้งหมดภายใน / foo / a, b, c ถึง / bar / a, b, c แล้วคัดลอกไฟล์บางไฟล์ที่มีนามสกุลบางอย่าง


ฉันสมมติว่านี่คือลินุกซ์?
soandos

ใช่ขอโทษใน linux
Mike

/ foo / a / foo / b foo / c หมายถึงเป็นไดเรกทอรีหรือไม่ ในการที่คุณต้องการโครงสร้างไดเรกทอรีทั้งหมดที่คัดลอกภายใต้ / foo, symlink ไฟล์ทั้งหมดที่ไม่ได้อยู่ใน ext (ใน tree / foo) และในที่สุดก็คัดลอกไฟล์ทั้งหมดของ ext ที่แน่นอน
Nicholi

คำตอบ:


0

จากไดเร็กทอรี / bar เพื่อสร้าง symlink ทั้งหมดสำหรับทุกอย่างยกเว้นส่วนขยายเหล่านี้

find ../foo/ -type f ! -name '*.txt' ! -name '*.baz' -exec ln -s '{}' \;

แล้วคัดลอกส่วนขยายทั้งหมดคำสั่งเดียวกันส่วนใหญ่

find ../foo/ -type f \( -name "*.txt" -o -name "*.baz" \) -exec cp '{}' ./ \;

แก้ไข : คัดลอกโครงสร้างไดเรกทอรีทั้งหมดเชื่อมโยงไฟล์บางไฟล์คัดลอกไฟล์อื่น ๆ ไม่แน่ใจว่าสิ่งนี้เป็นไปได้ในตอนแรกด้วยคำสั่งเดียว แต่เพิ่งเรียนรู้เทคนิคที่มีประโยชน์อื่น ๆ พร้อมค้นหา

find foo/ -type d -printf "mkdir -vp 'bar/%p'\n" -o -type f ! -name "*.txt" ! -name "*.baz" -printf "ln -vs '../%p' 'bar/%p'\n" -o -type f \( -name "*.txt" -o -name "*.baz" \) -printf "cp -v %p bar/%p\n" | sh
mv bar/foo/* bar/ && rm -R bar/foo/

สิ่งสำคัญที่ควรทราบคือเมื่อสร้างลิงก์สัญลักษณ์ที่คุณให้เส้นทางจริงลิงก์จะใช้เพื่อเกี่ยวข้องกับ foo / ตัวอย่างของฉันแสดงลิงก์สัมพัทธ์เมื่อพวกเขาอยู่เคียงข้างกัน (สามารถสร้างลิงก์สัญลักษณ์แบบสัมบูรณ์ได้เช่นกัน)


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