Файлов со временем становится всё больше и вот для меня наступил момент когда размещение и поиск файла создаёт массу проблем.
Данный вопрос многократно возникал ( 1 2 3 4 5 )
Обычные каталоги не помогают, система символических ссылок ужасна, комментарии к файлам (read.me, files.bbs, dirinfo, descript.ion) в Linux не поддерживаются, теги в базе данных (например Gnome[Nautilus] ~/.local/share/gvfs-metadata) обрекают на вечную зависимость от одного DE, ScrapBook(Firefox) - будет два места хранения ScrapBook и файловая система (в место одной проблемы - две), файлы в базе данных (DBFS) - отсутствуют вменяемые реализации, можно вообще не хранить файлы (есть google, yandex) или воспользоваться локальными поисковиками, но (Meta)Tracker и Nepomuk тормозят, а Beagle заброшен, теги в виде xattr практически не используются.
Поэтому решил написать простой каталогизатор:
- K файлам вручную добавляются xattr теги, а также рассчитанные автоматически контрольные суммы.
- Эта информация дублируется в комментарии к файлу «file.ext.txt» в надежде на некоторую переносимость и возможность индексации Tracker-ом.
- В данный момент можно создавать теги, добавлять к существующим тегам, осуществлять поиск тегов (причём путь и имя файла также участвуют в оценке рейтинга файла по данному запросу).
- Для всех команд в консоли (zsh) работает авто-дополнение, но нужно производить индексацию существующих тегов.
- При добавлении нового файла, его теги автоматически добавляются в индекс.
- При поиске найденные теги автоматически добавляются в индекс.
Todo (планы на будущее)
- чистка индексных файлов от неиспользуемых тегов
- при поиске не отображать «file.ext.txt» если есть файл «file.ext»
- создать базу данных с файлами и тегами для реактивного поиска и возможности восстановления тегов
- восстановление тегов (сообщение о различиях) при несовпадении xattr и «file.ext.txt» или несовпадении контрольных сумм
- использование EXIF и прочей мета-информации из содержимого файлов
- графический (GTK3) и libastral интерфейс
- превращение в дракона: величие и прожорливость
- многочисленные форки, в том числе на C, C++ (Qt5), Python, Ruby и прочих.
зависимости:
- guile (GNU Guile) 2.1.0.48-3c65e (в более ранних версиях наблюдались проблемы с юникодом 1 2)
- battery-scheme
Как всегда данное решение не панацея, но вдруг кому пригодится.