โดยปกติแล้วคุณจะต้องเปิด Shotwell แล้วลากเข้าไปในโฟลเดอร์
หากคุณต้องการคุณสามารถสร้างเชลล์สร้างรายการไฟล์ CR2 และบอก Shotwell ให้เปิดเฉพาะไฟล์เหล่านั้น บางครั้งอาจเป็นสิ่งที่คุณต้องการ แต่ในกรณีนี้ไม่ได้ทำสิ่งที่คุณต้องการเนื่องจากพฤติกรรมของ Shotwell - ในบางสถานการณ์คุณสมบัติ - โดยอัตโนมัติแสดงไฟล์ภาพอื่น ๆ (ทุกประเภท) ที่อยู่ใน โฟลเดอร์เดียวกับภาพที่คุณเปิด
เพื่อให้แน่ใจว่า Shotwell รู้เฉพาะภาพที่คุณสนใจคุณสามารถโคลนทรีไดเรกทอรีที่อื่นคัดลอกเฉพาะ.cr2
ไฟล์และโฟลเดอร์ที่เก็บไว้ แต่ไม่มีอะไรอื่น ที่อาจใช้พื้นที่เพิ่มเติมอย่างมาก ดังนั้นอีกวิธีหนึ่งคือการสร้างลำดับชั้นของการเชื่อมโยงสัญลักษณ์ - ที่แทนที่จะต้องมีต้นไม้ไดเรกทอรีใหม่ของสำเนาของเดิมของคุณ.cr2
ไฟล์คุณมีต้นไม้ไดเรกทอรีใหม่ของsyminks เพื่อพวกเขา สิ่งนี้ใช้พื้นที่น้อยกว่ามาก
คำตอบนี้ครอบคลุมวิธีการทั้งหมด
การเปิดโฟลเดอร์ภาพ (รวมถึงโฟลเดอร์ย่อย) ใน Shotwell
Shotwell ให้สองวิธีในการเปิดไดเรกตอรีรูปภาพทั้งหมด หากสิ่งเหล่านี้ใช้ได้ผลกับคุณคุณไม่จำเป็นต้องทำอะไรที่ชาญฉลาดในบรรทัดคำสั่งหรือแม้แต่ใช้งานเลย หากไม่เป็นเช่นนั้นคุณอาจทำสิ่งนี้ด้วยเทคนิคอื่น (ตัวอย่างเช่นหากคุณสร้างไดเรกทอรีใหม่ของ symlink หรือสำเนา.cr2
ไฟล์ของคุณคุณสามารถใช้วิธีใดวิธีหนึ่งในการเปิด)
วิธีที่ 1: เพียงเปิดโฟลเดอร์ทั้งหมดใน Shotwell
ใน Shotwell ในแฟ้มเมนูคลิกนำเข้าจากโฟลเดอร์ จากนั้นเลือกโฟลเดอร์ที่คุณต้องการนำเข้ารูปภาพ สิ่งนี้จะไม่ จำกัด เฉพาะ.cr2
ไฟล์ แต่ถ้าคุณกำลังเปิดไฟล์จากหลาย ๆ โฟลเดอร์ย่อยที่มี.cr2
ภาพที่สร้างจากกล้องดิจิทัลนั้นส่วนใหญ่แล้วไฟล์เหล่านั้นจะเป็นไฟล์เดียวที่มีอยู่
ดูคำตอบของจาคอบเพื่อแสดงรูปภาพทั้งหมดซ้ำ (รวมโฟลเดอร์ย่อย)สำหรับข้อมูลเพิ่มเติม
วิธีที่ 2: ลากโฟลเดอร์ไปยัง Shotwell
ด้วยสภาพแวดล้อมเดสก์ท็อปและไฟล์เบราว์เซอร์ส่วนใหญ่คุณสามารถเปิด Shotwell แล้วลากโฟลเดอร์ที่เก็บภาพของคุณไปไว้ในหน้าต่าง Shotwell เช่นเดียวกับการนำเข้าจากโฟลเดอร์นี่เป็นอีกวิธีที่ Shotwell แนะนำให้เปิดรูปภาพ
เมื่อคุณลากจากหน้าต่างเบราว์เซอร์ไฟล์หรือเดสก์ท็อปของคุณไปยัง Shotwell คุณสามารถลากไปยังไลบรารีเฉพาะ หรือถ้าคุณไม่มีห้องสมุดหลายแห่งคุณสามารถลากไปที่ใดก็ได้และใช้งานได้ (คุณไม่จำเป็นต้องลากเข้าไปในช่องด้านซ้าย)
วิธีนี้สะดวกมากและมีประสิทธิภาพเท่ากับการเลือกโฟลเดอร์ (ด้วยไฟล์ > นำเข้าจากโฟลเดอร์ตามที่อธิบายไว้ข้างต้น) เมื่อคุณเปิดไฟล์หรือโฟลเดอร์โดยใช้วิธีใดวิธีหนึ่งเหล่านี้ Shotwell ให้ตัวเลือกในการเปิดภาพถ่ายโดยไม่ต้องคัดลอกลงในไลบรารี
จะนำเข้าโดยไม่ต้องคัดลอกคลิกนำเข้าในสถานที่แทนการคัดลอกภาพถ่าย
เปิดตัว Shotwell ด้วยรายชื่อไฟล์ภาพ
หากด้วยเหตุผลบางอย่างที่คุณต้องการหรือจำเป็นต้องดำเนินการโดยใช้คำสั่งใน Terminal คุณสามารถเรียกใช้shotwell
คำสั่งและส่งชื่อไฟล์ของภาพแต่ละภาพให้เป็นอาร์กิวเมนต์ Globstarทำให้มันง่าย:
shopt -s globstar
shotwell **/*.cr2
ที่เปิด.cr2
ไฟล์ที่อยู่ที่ใดก็ได้ในไดเรกทอรีปัจจุบัน มันแตกต่างจากการใช้ Shotwell แล้วลากโฟลเดอร์เข้าไปใน Shotwell นั้นจะพยายามนำเข้าไฟล์ที่คุณให้ชื่อเท่านั้น อย่างไรก็ตามเนื่องจาก Shotwell มักจะแสดงไฟล์ภาพอื่น ๆ จากโฟลเดอร์เดียวกับไฟล์ที่คุณบอกให้เปิดดังนั้นอาจไม่เพียงพอสำหรับความต้องการของคุณ (และข้อมูลเพิ่มเติมที่คุณได้รับเกี่ยวกับปัญหาของคุณแสดงให้เห็นว่ามันไม่ใช่ดูทางเลือกด้านล่าง)
นี้ไม่รวมถึงไฟล์หรือโฟลเดอร์ที่มีชื่อขึ้นต้นด้วย .
อย่างไรก็ตามหากคุณมีไฟล์ CR2 ที่ชื่อขึ้นต้นด้วยจุดดังนั้นเวลาส่วนใหญ่ที่คุณอาจไม่ต้องการเปิดใน Shotwell เว้นแต่ว่าคุณตั้งใจตั้งชื่อไฟล์หรือโฟลเดอร์ด้วยวิธีนี้ dotfile ที่มีนามสกุลไฟล์รูปภาพหรือเอกสารมักจะเป็นไฟล์ข้อมูลเมตามากกว่าที่จะเป็นรูปภาพหรือเอกสารจริง ตัวอย่างเช่นmacOS มักจะเพิ่มไฟล์ดังกล่าว (เช่น._kittens.cr2
รูปภาพจริงkittens.cr2
) เมื่อเข้าถึงสื่อภายนอก (รวมถึงแฟลชไดรฟ์และกล้องดิจิทัล)
หากคุณต้องการค้นหาไฟล์ที่ชื่อขึ้นต้นด้วย.
หรือที่อยู่ในโฟลเดอร์ที่ชื่อขึ้นต้นด้วย.
ให้เปิดใช้งาน dotglob เช่นกัน คุณสามารถทำสิ่งนี้ด้วยshopt -s dotglob
หรือโดยผ่านทั้งสองglobstar
และdotglob
ไปยังshopt
builtin:
shopt -s globstar dotglob
ตามค่าเริ่มต้นแล้ว globs จะคำนึงถึงขนาดตัวพิมพ์ แต่คุณอาจต้องการให้ตรงกับชื่อไฟล์กรณี insensitivelyเพื่อเปิดไฟล์ที่ลงท้ายด้วย.cr2
, .Cr2
, และ.cR2
.CR2
ในการทำเช่นนั้น:
เปิดใช้งาน nocaseglob โดยเรียกใช้shopt -s
ด้วยnocaseglob
ตนเองหรือด้วยตัวเลือกเชลล์อื่น ๆ ตัวอย่างเช่นหากต้องการรันshotwell
กับ.cr2
ไฟล์ทั้งหมดการค้นหาแบบคำนึงถึงขนาดตัวพิมพ์และรวมถึง.
-files และไฟล์ใน -directories .
:
shopt -s globstar dotglob nocaseglob
shotwell **/*.cr2
หรือใช้.[cC][rR]2
แทน.cr2
ในรูปแบบ glob ของคุณเอง ตัวอย่างเช่นการทำเช่นนี้สำเร็จเหมือนด้านบน:
shopt -s globstar dotglob
shotwell **/*.[cC][rR]2
โปรดทราบว่าตัวพิมพ์เล็กและตัวพิมพ์ใหญ่นั้นแยกต่างหากจาก.
ไฟล์และโฟลเดอร์ที่ตรงกันหรือไม่ คุณสามารถลบออกdotglob
จากตัวอย่างด้านบนและยังสามารถใช้ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ได้
ในการระบุไดเรกทอรีแทนที่จะใช้เพียงไดเรกทอรีปัจจุบันให้ใส่ชื่อและไว้ข้าง/
หน้า**/*.cr2
glob ตัวอย่างเช่นการแทนที่shotwell
คำสั่งด้านบนด้วยไฟล์นี้จะเปิด.cr2
ไฟล์ทั้งหมดในPictures
ไดเรกทอรีย่อยของโฮมไดเร็กตอรี่ของคุณ:
shotwell ~/Pictures/**/*.cr2
แตกต่างจากคำสั่งแรกที่ใช้ไดเรกทอรีปัจจุบันของคุณไม่ว่าคุณจะเรียกใช้คำสั่งนั้นคุณจะบอกให้ Shotwell เปิดไฟล์เดียวกัน
การทดสอบ
หากคุณต้องใช้เทอร์มินัลสำหรับสิ่งนี้ฉันเดาว่ามันอาจเป็นส่วนหนึ่งของบางสิ่งที่ซับซ้อนกว่า ถ้าคุณชอบคุณสามารถทดสอบคำสั่งดังกล่าวก่อนที่จะทำงานจริงพวกเขาโดยการแทนที่ด้วยshotwell
printf '%s\n'
แทนที่จะส่งชื่อไฟล์ไปยัง Shotwell ซึ่งจะแสดงหนึ่งรายการต่อบรรทัด ตัวอย่างเช่นบนเครื่องของฉัน:
ek@Io:~$ printf '%s\n' ~/tmp/**/*.cr2
/home/ek/tmp/another image.cr2
/home/ek/tmp/image.cr2
/home/ek/tmp/some folder/image3.cr2
การปิด Globstar และตัวเลือกเชลล์อื่น ๆ
ตัวเลือก globstar shell เปิดใช้งานเพื่อทำงานซึ่งเป็นสิ่งที่shopt -s globstar
คำสั่ง (ด้านบน) ทำ หากเปิดใช้งานอยู่แล้วคุณไม่จำเป็นต้องใช้หลายคำสั่ง และคุณต้องตั้งค่า globstar หนึ่งครั้งต่อหนึ่งอินสแตนซ์ของเชลล์
คุณสามารถปิด globstar ได้โดยการวิ่ง:
shopt -u globstar
และคุณสามารถตรวจสอบว่า globstar เปิดหรือปิดได้โดยเรียกใช้:
shopt globstar
หากคุณกำลังใช้งาน globstar ในสคริปต์คุณควรพิจารณาปิดใช้งานหากมีรหัสที่มาหลังจากนั้นในสคริปต์เดียวกับที่ไม่ได้เขียนด้วย globstar ในใจ ตัวอย่างเช่นการเขียน**
เมื่อคุณหมายถึง*
มักจะไม่มีปัญหาเมื่อปิดการใช้งาน globstar แต่เมื่อเปิดการทำงานของ globstar มันอาจทำให้เกิดปัญหาร้ายแรงได้โดยการใช้คำสั่งส่งผลกระทบต่อไฟล์มากกว่าที่ตั้งใจไว้
ในทำนองเดียวกันถ้าคุณใช้ dotglob หรือ nocaseglob และคุณต้องการปิดเกินไปคุณสามารถทำได้ด้วยshopt -u dotglob
และshopt -u nocaseglob
ตามลำดับ คุณยังสามารถส่งตัวเลือกเชลล์ได้หลายตัวshopt -u
เพื่อยกเลิกการตั้งค่าในเวลาเดียวกัน ตัวอย่างเช่นเมื่อต้องการปิดglobstar,
dotglob
และnocaseglob
:
shopt -u globstar dotglob nocaseglob
เมื่อเปรียบเทียบกับ globstar มีข้อผิดพลาดร้ายแรงน้อยกว่าที่คุณอาจทำเพราะคุณลืมคุณออกจาก dotglob หรือ nocaseglob แต่คนอื่น ๆ (รวมถึงคนที่คุณปรึกษาเว็บไซต์เช่น Ask Ubuntu) มักจะถือว่า dotglob และ nocaseglob ถูกปิดใช้งานเมื่อพวกเขาแนะนำคำสั่งให้คุณใช้เว้นแต่คุณจะบอกพวกเขาเป็นอย่างอื่น
สำหรับข้อมูลเพิ่มเติมเกี่ยว glob ที่เกี่ยวข้องกับตัวเลือกเหล่านี้เปลือก (และยังglobs ทั่วไป ) ดูที่คู่มืออ้างอิงทุบตี พวกเขาจะครอบคลุมทั้งหมดเป็นหลักใน4.3.2 Shopt Builtin สำหรับ GLOBSTAR เห็น3.5.8.1 แบบจับคู่ สำหรับ dotglob เห็น3.5.8 ขยายชื่อไฟล์
สร้างทรีไดเรกทอรีใหม่
เนื่องจากในกรณีของคุณคุณต้องการให้ Shotwell แสดงเฉพาะ .cr2
ไฟล์เท่านั้นคุณมี.cr2
ไฟล์ในโฟลเดอร์เดียวกันที่มี.cr2
ไฟล์และการเรียกดูรูปภาพใน Shotwell จะเสนอไฟล์เหล่านั้นโดยอัตโนมัติด้วยดูเหมือนว่าคุณจะต้องมีโฟลเดอร์ที่ ไม่มีไฟล์รูปภาพอื่นนอกเหนือจาก.cr2
ไฟล์ที่คุณพยายามเปิด
การย้ายไฟล์ตามที่คุณแนะนำเป็นวิธีหนึ่ง แต่ฉันขอแนะนำแทนการคัดลอกไฟล์หรือดีกว่าสร้างลิงก์สัญลักษณ์ไปยังไฟล์ (ดูFOLDOC ด้วย ) เพราะ:
- หากคุณกำลังย้ายไฟล์ข้ามอุปกรณ์ที่ต้องคัดลอกอยู่แล้วดังนั้นในกรณีนี้การย้ายจะไม่เร็วกว่านี้
- หากคุณมีพื้นที่ว่างมันเป็นความคิดที่ดีที่จะเก็บโฟลเดอร์ที่ไม่ได้แก้ไขของทุกสิ่งที่คุณเริ่มด้วยจนกว่าคุณจะพอใจว่าสิ่งที่คุณทำถูกต้องตามความต้องการของคุณ เห็นได้ชัดว่านี่ไม่ได้มีผลบังคับใช้หรือใช้งานได้จริงเสมอไป แต่ในกรณีของคุณไฟล์เหล่านี้เป็นผลมาจากการดำเนินการกู้คืนข้อมูล มันอาจมีประโยชน์ในการเก็บบันทึกที่ถูกอ่านได้อย่างง่ายดายถึงสิ่งที่ถูกกู้คืนและจากที่ใด
- หากคุณเลือกที่จะสร้างลิงก์สัญลักษณ์จำนวนพื้นที่เพิ่มเติมที่ใช้ไปนั้นน้อยมาก (หากดิสก์เป้าหมายเต็มโดยสมบูรณ์คุณจะยังคงต้องเพิ่มพื้นที่ว่างบนดิสก์หรือใช้ดิสก์เป้าหมายอื่นเพื่อสร้าง symlink)
มีการตัดสินใจอีกอย่างหนึ่งสำหรับคุณเช่นกัน คุณสร้างรายการใหม่ทั้งหมด (ไม่ว่าจะเป็นสำเนาหรือ symlink) ในไดเรกทอรีเดียวกันทำให้ลำดับชั้นของไฟล์แบนราบหรือไม่? หรือคุณสร้างไดเรกทอรีที่ปลายทางที่สอดคล้องกับแต่ละไดเรกทอรีที่แหล่งที่มีอย่างน้อยหนึ่ง.cr2
ไฟล์?
การทำให้ลำดับชั้นของไฟล์เรียบขึ้นช่วยให้คุณเห็นไฟล์ทั้งหมดพร้อมกันได้อย่างง่ายดาย โดยเฉพาะอย่างยิ่งมันเป็นเรื่องง่ายที่จะเห็นชื่อและขนาดของไฟล์ทั้งหมดในครั้งเดียวเช่นเดียวกับการเลือกรวมกันของไฟล์ในเบราว์เซอร์ไฟล์กราฟิก
แต่มันก็สูญเสียข้อมูลเกี่ยวกับโฟลเดอร์ที่พวกเขาอยู่ด้วยซึ่งอาจมีประโยชน์ (แม้ว่าคุณจะสามารถกลับไปที่โฟลเดอร์ดั้งเดิมและค้นหาที่นั่นหากคุณไม่ย้ายไฟล์)
ปัญหาใหญ่กับแฟบลำดับชั้นของไฟล์ แต่เป็นสิ่งที่เกิดขึ้นถ้าคุณมีสองคนหรือมากกว่าไฟล์ที่มีชื่อเดียวกันในสถานที่ที่แตกต่างกัน หากคุณเรียบลำดับชั้นของไฟล์ขึ้นอยู่กับว่าคุณทำมันอย่างไรทั้งหมด แต่อันแรกจะไม่สามารถคัดลอก (หรือเชื่อมโยง) และคุณจะได้รับข้อผิดพลาดหรือคำเตือนหรือทั้งหมดยกเว้นสำเนาล่าสุด (หรือลิงค์) จะ จะถูกเขียนทับ
นี่คืออีกเหตุผลที่ฉันแนะนำให้คัดลอกหรือสร้าง symlink แทนที่จะย้ายไฟล์ หากคุณ "ประสบความสำเร็จ" ย้ายไฟล์หลาย ๆ ไฟล์เป็นไฟล์เดียวกันแสดงว่าคุณสูญเสียไฟล์ทั้งหมดยกเว้นไฟล์ล่าสุด!
เนื่องจากข้อเสียของการทำให้ทุกอย่างแบนราบลงในไดเรกทอรีเดียวโดยไม่มีไดเรกทอรีย่อยวิธีที่ฉันใช้ที่นี่สร้างไดเรกทอรีต้นไม้ใหม่ที่ปลายทาง
วิธีที่ 1: การคัดลอก
ฉันแสดงสิ่งนี้ก่อนเพราะมันง่ายกว่าเล็กน้อย แต่ฉันขอแนะนำให้คุณสร้างลิงก์สัญลักษณ์ ("วิธีที่ 2") แทนโดยเฉพาะอย่างยิ่งหากไดรฟ์ปลายทางอาจมีพื้นที่ไม่เพียงพอที่จะเก็บไฟล์ทั้งหมด "วิธีที่ 2" ซึ่งซับซ้อนกว่าเล็กน้อยมีรายละเอียดมากขึ้นเนื่องจากดูเหมือนจะมีทรัพยากรน้อยลงในการใช้เทคนิคนั้นมันเป็นวิธีที่ฉันคาดว่าคนส่วนใหญ่ในสถานการณ์นี้จะชอบมากกว่าและข้อมูลที่ใช้กับทั้งสองวิธี - คำแนะนำพื้นฐานเกี่ยวกับการหลบหนีช่องว่างในเส้นทาง - ได้รับมากกว่าที่นี่
เมื่อคุณต้องคัดลอกต้นไม้ไดเรกทอรีและคุณต้องกำหนดดำเนินการคัดลอกโดยปกติแล้วคุณควรจะใช้แทนrsync
cp
นี่เป็นหนึ่งในกรณีเหล่านั้น
การแทนที่src
ด้วยพา ธ ไปยังไดเร็กทอรีระดับบนสุดที่มีไฟล์ CR2 ทั้งหมดของคุณและแทนที่dest
ด้วยชื่อของไดเร็กทอรีที่คุณต้องการสร้างที่จะมีลำดับชั้นของลิงก์สัญลักษณ์ไปยังไฟล์ CR2 รัน:
rsync -rl --prune-empty-dirs --include='*/' --include='*.cr2' --exclude='*' src/ dest
อย่าลืม/
หลังจากชื่อของไดเรกทอรีที่มาถ้าคุณต้องการไดเรกทอรีระดับบนสุดที่เพิ่มเติมที่จะสร้างขึ้นภายใน dest
นั่นคือถ้าคุณไม่ใช้ต่อท้าย/
แล้วจะทำให้ไดเรกทอรีปลายทางสำหรับคุณภายในrsync
dest
ตัวอย่างเช่นสมมติว่าเป็นเส้นทางที่มีญาติไม่มีsrc
/
แล้ว:
- กับ
src/
คุณในrsync
คำสั่งคุณจะได้รับลิงก์สัญลักษณ์สำหรับแฟ้มdest/foo/bar.cr2
src/foo/bar.cr2
- กับ
src
คุณในrsync
คำสั่งคุณจะได้รับลิงก์สัญลักษณ์สำหรับแฟ้มdest/src/foo/bar.cr2
src/foo/bar.cr2
เนื่องจากอาจสร้างความสับสนให้กับไดเรกทอรีระดับบนสุดซึ่ง symlink จะถูกวางให้มีชื่อเดียวกันกับของไดเรกทอรีระดับบนสุดที่มี.cr2
ไฟล์ที่ symlink จะชี้ไปฉันขอแนะนำให้คุณใส่/
จุดสิ้นสุดปลายทาง ชื่อไดเรกทอรีในrsync
คำสั่งของคุณ (และสำหรับไดเรกทอรีต้นทางให้ระบุไดเรกทอรีที่ว่างเปล่าไม่มีอยู่หรือทุ่มเทให้กับวัตถุประสงค์นี้ไม่เช่นนั้นคุณจะทำให้โฟลเดอร์อื่นวุ่นวายขึ้น)
ในฐานะที่เป็นกรณีทั่วไปเมื่อคุณผ่านชื่อของไฟล์หรือไดเรกทอรีไปยังโปรแกรมบรรทัดคำสั่งหรือสคริปต์ถ้าปลายทางหรือแหล่งที่มาของเส้นทางไดเรกทอรีของคุณมีช่องว่างใด ๆ (หรือตัวอักษรที่ได้รับการปฏิบัติเป็นพิเศษโดยเปลือกเช่น\
, $
, '
และต่างๆ เครื่องหมายวรรคตอนอื่น ๆ ) แล้วคุณจะต้องพูดกับพวกเขา ฉันมีรายละเอียดวิธีการทำเช่นนี้สำหรับกรณีที่พบบ่อยที่สุดของช่องว่างใน "วิธีที่ 2" - คำแนะนำเกี่ยวกับการอ้างถึงในส่วนนั้นมีผลที่นี่เช่นกัน อย่างไรก็ตามหากคุณไม่แน่ใจว่าจะอ้างอิงชื่อโฟลเดอร์อย่างไรคุณสามารถให้ Ubuntu ทำเพื่อคุณโดยเพียงแค่ลากโฟลเดอร์ไปที่ Temrminal เส้นทางแบบเต็มของมันจะถูกวางด้วยคำพูดที่ถูกต้อง
หลังจากคัดลอกเฉพาะ.cr2
ไฟล์และโฟลเดอร์ที่มีพวกเขาคุณสามารถเปิดโฟลเดอร์ปลายทางใน Shotwell (ดูที่"การเปิดโฟลเดอร์ภาพ (รวมถึงโฟลเดอร์ย่อย) ใน Shotwell"ด้านบน) อย่างไรก็ตามก่อนที่จะเปิดใช้งานrsync
ฉันขอแนะนำให้คุณตัดสินใจว่าต้องการข้ามรายการที่ขึ้นต้นด้วย.
และถ้าคุณต้องการรวมรายการที่มีคำต่อท้ายตัวแปร ถ้าเป็นเช่นนั้นคุณจะต้องเรียกใช้rsync
คำสั่งที่แตกต่างกันเล็กน้อย
การปรับแต่งการจัดการรายการที่เป็นจุดและความอ่อนตัวของเคส
คุณอาจต้องการใช้rsync
คำสั่งอื่นเพื่อเปลี่ยนว่าไฟล์และไดเรกทอรีที่ขึ้นต้นด้วยจุดจะถูกข้ามหรือไม่และคุณต้องการให้คำนึงถึงตัวพิมพ์ใหญ่และเล็กในการจับคู่ส่วนต่อท้าย.cr2
หรือไม่
คำสั่งดังกล่าวไม่.
รวมถึงไดเรกทอรีและไฟล์ที่มีชื่อขึ้นต้นด้วย หากต้องการยกเว้นไฟล์และไดเรกทอรีดังกล่าวให้ใส่--exclude='.*/' --exclude='.*'
ก่อนหน้า--include
s และ--exclude
s ทั้งหมด นั่นคือใช้rsync
คำสั่งนี้แทน (พร้อมการแทนที่ที่เหมาะสมสำหรับsrc
และdest
แน่นอน):
rsync -rl --prune-empty-dirs --exclude='.*/' --exclude='.*' --include='*/' --include='*.cr2' --exclude='*' src/ dest
rsync
คำสั่งแสดงป่านนี้ได้รับเป็นกรณี ๆ ไปและจะไม่คัดลอกไฟล์ที่สิ้นสุดใน.CR2
, .Cr2
หรือมากกว่า.cR2
.cr2
หากคุณต้องการไฟล์ดังกล่าวจะได้รับการคัดลอกแล้วคุณจะต้องไปยังบัญชีที่โดยใช้--include
รูปแบบในสถานที่ของ*.[cC][rR]2
*.cr2
คำสั่งที่สามนี้คำนึงถึงขนาดตัวพิมพ์และ (เช่นคำสั่งแรก) ไม่ข้ามไฟล์และไดเรกทอรีที่ชื่อขึ้นต้นด้วย.
:
rsync -rl --prune-empty-dirs --include='*/' --include='*.[cC][rR]2' --exclude='*' src/ dest
หากคุณใช้วิธีคัดลอกไฟล์ด้วยrsync
และคุณไม่แน่ใจว่าต้องการใช้คำสั่งใดฉันขอแนะนำให้ใช้วิธีนี้หากคุณต้องการให้แน่ใจว่าจะไม่พลาดอะไร อย่างไรก็ตามคุณควรระวังว่าดอทไฟล์อาจมีเมทาดาทาและดอทฟิลที่มีชื่อเหมือนภาพอาจไม่ใช่ภาพ ดูการอภิปรายเกี่ยวกับ dotfiles ในส่วน"การเรียกใช้ Shotwell ด้วยรายชื่อไฟล์ภาพ"ด้านบนและใน dotfiles และตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ใน "วิธีที่ 2" ด้านล่าง
คำสั่งนี้ที่สี่คือกรณีตายและ (เช่นคำสั่งที่สอง) ไม่ไฟล์และไดเรกทอรีเฮี๊ยบมีชื่อขึ้นต้นด้วย.
:
rsync -rl --prune-empty-dirs --exclude='.*/' --exclude='.*' --include='*/' --include='*.[cC][rR]2' --exclude='*' src/ dest
วิธีที่ 2: การสร้างลิงก์สัญลักษณ์
นี่คือสิ่งที่ฉันแนะนำให้คุณทำแม้ว่าวิธีที่ 1 จะไม่เป็นไรถ้าคุณมีพื้นที่เพียงพอในไดรฟ์ปลายทาง คุณไม่ต้องอ่านวิธีที่ 1 เพื่อใช้งานนี้
วิธีการนำเสนอที่นี่สร้างรายการ.cr2
ไฟล์และวนรอบรายการสร้างไดเรกทอรีเป้าหมายตามต้องการและเติมข้อมูลด้วยลิงก์สัญลักษณ์ไปยังแต่ละ.cr2
ไฟล์
นี่ซับซ้อนพอที่ฉันแนะนำให้วางไว้ในสคริปต์แทนที่จะพิมพ์ลงในแบบโต้ตอบ คุณสามารถวางสคริปต์ได้ทุกที่ที่คุณต้องการ แต่เพื่อความสะดวกฉันจะแสดงวิธีทำโดยวางสคริปต์ไว้ในโฟลเดอร์หลักของคุณโดยตรง
เขียน (หรือวาง) สคริปต์
สร้างไฟล์ข้อความmake-symlinks
ในโฟลเดอร์บ้านของคุณ ไม่จำเป็นต้องมีนามสกุลไฟล์
คุณสามารถทำได้ด้วยโปรแกรมแก้ไขข้อความใด ๆ เช่น Vim, Nano, Gedit หรือ Leafpad อย่าใช้โปรแกรมประมวลผลคำเช่น LibreOffice Writer (คุณสามารถทำได้โดยการเรียกใช้cat > ~/make-symlinks
วางเนื้อหาของไฟล์และกดCtrl+ Dบนบรรทัดใหม่หากคุณต้องการ)
หากคุณตั้งชื่อสคริปต์เป็นอย่างอื่นmake-symlinks
โปรดใช้ชื่อนั้นเมื่อคุณเรียกใช้คำสั่งที่ใช้สคริปต์ในภายหลัง
#!/bin/bash
shopt -s globstar dotglob nocaseglob
for f in **/*.cr2; do
mkdir -p "$1/$(dirname "$f")"
ln -s "$PWD/$f" "$1/$f"
done
ใส่ลงในไฟล์และบันทึกไฟล์ นี้ใช้สคริปต์ GLOBSTAR คุณลักษณะทุบตีอธิบายข้างต้นใน"การเปิดตัว Shotwell กับรายการของชื่อไฟล์ภาพ"
คุณสามารถเปลี่ยนวิธีจัดการรายการที่เป็นจุด
ขึ้นอยู่กับความต้องการของคุณคุณอาจต้องการเปลี่ยนแปลง:
หากคุณไม่ต้องการรวม.cr2
ไฟล์ที่มีชื่อขึ้นต้นด้วย.
หรืออยู่ในไดเรกทอรีที่ชื่อขึ้นต้นด้วย.
ให้ลบออกdotglob
จากshopt
บรรทัด
ไฟล์และไดเรกทอรีที่ชื่อขึ้นต้นด้วย.
มักใช้สำหรับข้อมูลเมตา (ดูส่วน"การเรียกใช้ Shotwell ด้วยรายชื่อไฟล์ภาพ"ด้านบน) dotglob
ในทางกลับกันถ้าคุณต้องการให้แน่ใจว่าคุณมีทุกอย่างหรือถ้ามีบางสิ่งบางอย่างที่ขาดหายไปอย่างลึกลับที่คุณจะสวยแน่ใจว่าจะมีแล้วควรเก็บไว้
หากคุณต้องการที่จะรวมเฉพาะไฟล์ที่สิ้นสุดในตรง.cr2
แต่ไม่ได้กรณีสายพันธุ์ ( .CR2
, .Cr2
และ.cR2
) nocaseglob
แล้วคุณควรลบ เนื่องจากสถานการณ์ของคุณที่เกี่ยวข้องกับการกู้คืนข้อมูลและShotwell จะไม่แสดงไฟล์ใด ๆ ที่คุณพลาดเมื่อคุณเปิดขึ้นไดเรกทอรีของการเชื่อมโยงสัญลักษณ์ - ที่จุดของวิธีการนี้หลังจากทั้งหมด - nocaseglob
คุณอาจจะต้องการที่จะเก็บ
ทำให้ปฏิบัติการได้
รันคำสั่งนี้เพื่อทำเครื่องหมายสคริปต์ที่สามารถเรียกใช้งานได้:
chmod +x ~/make-symlinks
เรียกใช้ที่แหล่งที่มาและผ่านปลายทางเป็นอาร์กิวเมนต์
จากนั้นเปลี่ยนไดเรกทอรีเป็นไดเรกทอรีต้นทางเช่นโฟลเดอร์ระดับบนสุดที่มีรูปภาพ ตัวอย่างเช่นหากอยู่ในPictures
ไดเรกทอรีย่อยของโฮมไดเรกทอรีของคุณคุณจะเรียกใช้:
cd ~/Pictures
นี่คือที่ที่คุณจะเรียกใช้สคริปต์ ส่งไดเรกทอรีปลายทางไปยังสคริปต์เป็นอาร์กิวเมนต์บรรทัดคำสั่ง
ตัวอย่างเช่นหากคุณต้องการให้สร้างไดเรกทอรีที่เรียกว่าcr2s
บนเดสก์ท็อปของคุณเพื่อให้มีลิงก์สัญลักษณ์ให้รัน:
~/make-symlinks ~/Desktop/cr2s
หรือถ้าคุณต้องการไดเรกทอรีนั้นโดยตรงในโฟลเดอร์บ้านของคุณ:
~/make-symlinks ~/cr2s
หรือถ้าคุณมีไดรฟ์ติดตั้งอยู่/media/you/MyDrive
และคุณต้องการสร้างโฟลเดอร์ที่เรียกว่าlinks
มีลิงก์สัญลักษณ์:
~/make-symlinks /media/you/MyDrive/links
แต่ถ้าไดรฟ์นั้น/media/you/My Drive
มีที่ว่างคุณต้องใช้ใบเสนอราคา งานใด ๆ เหล่านี้ (ใช้เพียงงานเดียวอย่าใช้งานทั้งหมด):
~/make-symlinks '/media/you/My Drive/links'
~/make-symlinks /media/you/'My Drive'/links
~/make-symlinks /media/you/My\ Drive/links
แต่ถ้าคุณใช้~
สำหรับโฮมไดเร็กตอรี่ของคุณอย่าอ้างว่า
~/make-symlinks ~/'Two Words' # good
~/make-symlinks ~/Two\ Words # good
~/make-symlinks '~/Two Words' # BAD, because ~ doesn't get expanded
make-symlinks
สร้างไดเรกทอรีปลายทางสำหรับคุณหากยังไม่มีอยู่เช่นเดียวกับที่สร้างไดเรกทอรีย่อยภายใน อย่างไรก็ตามยังคงใช้งานได้หากปลายทางมีอยู่แล้ว
คุณสามารถเรียกใช้หลาย ๆ ครั้งและส่งผ่านไดเรกทอรีปลายทางเดียวกัน (ตัวอย่างเช่นหากคุณขัดจังหวะด้วยCtrl+ C) แม้ว่าคุณจะได้รับfailed to create symbolic link
ข้อผิดพลาดสำหรับ symlink ที่มีอยู่แล้วและอาจทำให้สับสน
คุณอาจไม่ต้องการที่จะผ่านชื่อของไดเรกทอรีที่มีอยู่แล้วและมีไฟล์ที่ไม่เกี่ยวข้อง (เช่นไดเรกทอรีบ้านของคุณ) make-symlinks
ที่จะ หากคุณทำเช่นนั้นคุณสามารถคาดหวังว่าจะมีการสร้าง symlink และโฟลเดอร์ย่อยทั้งหมดขึ้นมา คุณอาจต้องการที่จะใช้ไดเรกทอรีใหม่ - หรือคนที่ไม่ได้อยู่ยัง - make-symlinks
สำหรับ
นำเข้าต้นไม้ symlink ที่สร้างขึ้นใหม่เข้าไปใน Shotwell
หลังจากที่คุณเรียกใช้make-symlinks
เพียงนำเข้าไดเรกทอรีที่คุณส่งไปยัง Shotwell โดยใช้วิธีใดวิธีหนึ่งที่ให้ไว้ในส่วนแรกของคำตอบนี้ ( "การเปิดโฟลเดอร์ภาพ (รวมถึงโฟลเดอร์ย่อย) ใน Shotwell" ) ตัวอย่างเช่นคุณสามารถเปิด Shotwell แล้วลากโฟลเดอร์
เนื่องจากรายการทั้งหมดในโฟลเดอร์เป็นลิงก์สัญลักษณ์ไปยัง.cr2
ไฟล์หรือไดเรกทอรีที่มีรายการเหล่านั้นโดยไม่มีไฟล์ประเภทอื่น Shotwell จึงไม่ควรเห็นไฟล์อื่นใด