Không rõ bạn muốn tìm kiếm kiểu gì. Nếu bạn muốn nó hoạt động ở bất cứ đâu trong unix, thay vào đó chỉ là thư mục chính của bạn và bạn chỉ muốn thực hiện các tìm kiếm dựa trên tên đường dẫn, thì lược đồ sau có thể thực hiện được, với một chút hack shell và sử dụng tiêu chuẩn locatedb
:
- Mỗi thư mục chứa ít nhất một tệp được gắn thẻ cần một thư mục con tiêu chuẩn, giả sử
.path-tags
;
- Mỗi tệp trong thư mục $ FILE có liên kết $ TAG (không chứa char
_
) có một liên kết$TAG_$FILE -> ../$FILE
Tôi để lại các chi tiết của locate-tag
kịch bản cho bạn; nó phải là một hoặc hai hoặc ba lớp, chỉ sử dụng locate
lệnh hack và shell. (Nếu bạn quan tâm, tôi có thể viết một cái).
Một số mánh khóe KDE đã nói về loại lược đồ này cho siêu dữ liệu, mặc dù tôi không nhớ các chi tiết.
Cũng có thể thực hiện các bài kiểm tra nội dung phức tạp hơn, dựa trên sơ đồ này với một kịch bản tương tự được bao quanh find
.
Suy nghĩ về các yêu cầu cập nhật
- bất kỳ tập tin nào người dùng có thể đọc được đều có thể được gắn thẻ tự do - Có, sẽ không có vấn đề gì
- người dùng có thể tìm kiếm các tệp khớp với một hoặc một số thẻ - Tương tự như vậy
- các tệp có thể được di chuyển xung quanh mà không làm mất các thẻ được liên kết trước đó - Các thư mục mà chúng sinh sống có thể được di chuyển tự do, nhưng nếu tệp được di chuyển khỏi thư mục, chúng tôi sẽ gặp rắc rối. Nếu các thẻ có dạng
$TAG_$INODE_$FILE
và chúng ta có một cách hiệu quả để tìm đường dẫn nào có một nút cho trước , thì chúng ta có thể làm điều này, chỉ mất các thẻ nếu chúng ta di chuyển khỏi các hệ thống tệp. Sao chép tập tin có thể gây ra một số rắc rối và điều này rõ ràng phức tạp hơn đề xuất ban đầu của tôi.
- hệ thống có thể được sao lưu dễ dàng - về cơ bản không khó.
- không phụ thuộc vào bất kỳ môi trường máy tính để bàn - none
- nếu có bất kỳ gui nào tham gia, thì phải có một dự phòng cli - đó là nơi chúng ta sống!
Postcript
Tập tin "đảo ngược inode" được mô tả bởi liên kết (2) mà bạn đã cho tôi thấy trong câu trả lời của bạn cho (1) có thể được sử dụng để cung cấp một số cơ sở hạ tầng bổ sung. Chúng tôi có thể chạy một dịch vụ trên tệp tra cứu ngược, kiểm tra xem mỗi nút được cung cấp trong tên tệp của thẻ có khớp với nút của tệp (nếu có) mà thẻ trỏ tới. Nếu không có kết quả khớp thì có thể thực hiện phẫu thuật cần thiết (liệu inode có còn tồn tại không? Ở đâu?) Và tệp tra cứu ngược bị đột biến hoặc được tạo lại và các liên kết thẻ được cập nhật.
Tôi dự đoán một trường hợp khó khăn: nếu tệp được gắn thẻ không phải là nơi các thẻ nói rằng nó sẽ tồn tại, thì tệp tra cứu ngược lại cho biết nó vẫn tồn tại, nhưng tệp prodigal không phải là nơi tệp tra cứu cho biết, tệp tra cứu nằm ngoài ngày? Có một vài cách để xử lý trường hợp này, không có lý tưởng rõ ràng. Ngoài ra, toàn bộ nhiệm vụ này dường như là thứ mà Perl rất phù hợp với ...