ยังไม่ชัดเจนว่าคุณต้องการค้นหาแบบใด ถ้าคุณต้องการให้มันทำงานได้ทุกที่ในยูนิกซ์แทนที่จะเป็นแค่โฮมไดเร็กตอรี่ของคุณ, และคุณต้องการค้นหาตามชื่อพา ธ , โครงร่างต่อไปนี้สามารถใช้งานได้, โดยมีเชลล์แฮ็คนิดหน่อย, และใช้มาตรฐานlocatedb
:
- แต่ละไดเร็กทอรีที่มีไฟล์ที่ติดแท็กอย่างน้อยหนึ่งไฟล์ต้องการไดเรกทอรีย่อยมาตรฐาน
.path-tags
;
- แต่ละไฟล์ในไดเรกทอรี $ FILE พร้อมลิงก์ $ TAG (ซึ่งไม่ควรมีอักขระถ่าน
_
) มีลิงก์$TAG_$FILE -> ../$FILE
ฉันปล่อยรายละเอียดของlocate-tag
สคริปต์ให้คุณ มันควรจะเป็นแบบสองหรือสามซับโดยใช้locate
คำสั่งและแฮ็กเชลล์เท่านั้น (หากคุณสนใจฉันสามารถเขียนหนึ่ง)
แชปของ KDE บางตัวพูดถึงโครงร่างประเภทนี้สำหรับเมตาดาต้าแม้ว่าฉันจะจำรายละเอียดไม่ได้
find
มันก็ควรจะเป็นไปได้ที่จะทำที่ซับซ้อนมากขึ้นการทดสอบเนื้อหาการตรวจสอบขึ้นอยู่กับโครงการนี้กับสคริปต์ที่คล้ายกันห่อรอบ
ความคิดเกี่ยวกับข้อกำหนดที่อัปเดต
- ไฟล์ใด ๆ ที่ผู้ใช้สามารถอ่านได้สามารถติดแท็กได้อย่างอิสระ - ใช่ไม่น่าจะมีปัญหา
- ผู้ใช้สามารถค้นหาไฟล์ที่ตรงกับหนึ่งหรือหลายแท็ก - เช่นเดียวกัน
- ไฟล์สามารถย้ายไปมาได้โดยไม่สูญเสียแท็กที่เกี่ยวข้องก่อนหน้านี้ - ไดเรกทอรีที่พวกเขาอาศัยอยู่สามารถย้ายได้อย่างอิสระ แต่ถ้าไฟล์ถูกย้ายจากไดเรกทอรีเรากำลังมีปัญหา หากแท็กใช้แบบฟอร์ม
$TAG_$INODE_$FILE
และเรามีวิธีที่มีประสิทธิภาพในการค้นหาว่าพา ธ ใดมีไอโหนดที่กำหนดเราก็สามารถทำเช่นนี้สูญเสียแท็กได้ก็ต่อเมื่อเราย้ายออกจากระบบไฟล์ การคัดลอกไฟล์อาจสร้างปัญหาและนี่ก็ซับซ้อนกว่าคำแนะนำเดิมของฉันอย่างชัดเจน
- ระบบสามารถสำรองข้อมูลได้ง่าย - ไม่ยาก
- ไม่มีการพึ่งพาสภาพแวดล้อมเดสก์ทอปใด ๆ - ไม่มี
- หาก gui ใด ๆ ที่เกี่ยวข้องจะต้องมีทางเลือก cli - ที่เราอาศัยอยู่!
Postscript ไฟล์
"reverse-inode-lookup" ซึ่งอธิบายโดยลิงก์(2) ที่คุณแสดงให้ฉันเห็นในคำตอบของคุณถึง(1)สามารถใช้เพื่อให้โครงสร้างพื้นฐานเพิ่มเติมบางอย่าง เราสามารถเรียกใช้บริการในไฟล์ค้นหาแบบย้อนกลับซึ่งตรวจสอบว่าแต่ละไอโหนดที่ระบุในชื่อไฟล์ของแท็กตรงกับไอโหนดของไฟล์ (ถ้ามี) แท็กชี้ไปที่ หากไม่มีการจับคู่การผ่าตัดที่ต้องการสามารถดำเนินการได้ (inode ยังคงอยู่หรือไม่มันอยู่ที่ไหน) และไฟล์ค้นหาแบบย้อนกลับกำลังกลายพันธุ์หรือสร้างใหม่และการเชื่อมโยงแท็กจะถูกอัพเดต
ฉันคาดว่าจะเป็นกรณีที่ยุ่งยาก: หากไฟล์ที่ติดแท็กไม่ใช่ตำแหน่งที่แท็กบอกว่าควรเป็นไฟล์ค้นหาแบบย้อนกลับบอกว่ามันยังคงมีอยู่ แต่ไฟล์ prodigal ไม่ใช่ตำแหน่งที่ไฟล์ค้นหาบอกว่าเป็นไฟล์ค้นหาที่อยู่นอก วันที่? มีสองสามวิธีในการจัดการกับกรณีนี้ นอกเหนือจากนี้งานทั้งหมดนี้น่าจะเป็นสิ่งที่ Perl เหมาะกับ ...