Не ясно, якого типу пошуку ви хочете. Якщо ви хочете, щоб він працював у будь-якій точці unix, а не просто у вашому домашньому каталозі, і ви хочете робити лише пошук на основі шляху, наступна схема є ефективною, з невеликим хакером оболонки та використанням стандартного locatedb
:
- Кожен каталог, який містить щонайменше один тег, потребує стандартного підкаталогу, скажімо
.path-tags
;
- Кожен файл у каталозі $ FILE із посиланням $ TAG (який не повинен містити знаків
_
) має посилання$TAG_$FILE -> ../$FILE
Деталі locate-tag
сценарію я залишаю вам; це повинен бути дво- або трилайнєр, використовуючи лише locate
хакерство команд і оболонок. (Якщо вам цікаво, я можу написати один).
Деякі з глав KDE розповідали про таку схему метаданих, хоча деталей я не пам'ятаю.
Слід також мати можливість робити більш складні тести з вивчення контенту на основі цієї схеми з аналогічним сценарієм, обгорнутим навколо find
.
Думки про оновлені вимоги
- будь-який файл, прочитаний користувачем, можна вільно помітити - Так, не повинно бути проблем
- користувач може шукати файли, що відповідають одному або декільком тегам - Аналогічно
- Файли можна переміщувати, не втрачаючи раніше пов’язаних тегів - Каталоги, які вони заселяють, можна вільно переміщувати, але якщо файл переміщено з каталогу, ми опинилися в біді. Якщо теги прийняли форму,
$TAG_$INODE_$FILE
і у нас є ефективний спосіб знайти, які шляхи мають заданий inode , ми можемо це зробити, втрачаючи теги, лише якщо ми переходимо з файлових систем. Копіювання файлів може створити певні проблеми, і це явно складніше, ніж моя оригінальна пропозиція.
- систему можна було б створити резервну копію - не дуже важко.
- немає залежностей від будь-якого середовища робочого столу - немає
- якщо задіяний якийсь gui, мусить бути резервний кліп - саме там ми живемо!
Постскрипт
Файл "зворотного введення-пошуку", описаний за посиланням (2), який ви мені показали у своїй відповіді на (1), може використовуватися для надання деякої додаткової інфраструктури. Ми можемо запустити службу у файлі зворотного пошуку, який перевіряє, чи відповідає кожен inode, вказаний у імені файлу тегу, відповідний входу файла (якщо такий є), на який вказує тег. Якщо немає відповідності, то може бути проведена необхідна операція (чи існує ще одна індея? Де це?), А файл зворотного пошуку або мутується, або регенерується, і тег посилається на оновлення.
Я передбачаю один складний випадок: що робити, якщо тегований файл знаходиться не там, де теги кажуть, що має бути, у зворотному файлі пошуку йдеться, що він все ще існує, але блудний файл не там, де файл пошуку каже, що він є, а файл пошуку не знаходиться дата? Є кілька способів вирішити цю справу, жоден, очевидно, ідеальний. Крім цього, все це завдання, схоже, на те, що Perl добре підходить ...