Nie jest jasne, jakiego rodzaju poszukiwania chcesz. Jeśli chcesz, aby działał gdziekolwiek w Uniksie, a nie tylko w twoim katalogu domowym, a chcesz tylko wyszukiwać na podstawie ścieżek, poniższy schemat jest wykonalny, z odrobiną włamań do powłoki i przy użyciu standardowego locatedb
:
- Każdy katalog, który zawiera co najmniej jeden oznakowany plik, potrzebuje standardowego podkatalogu, powiedzmy
.path-tags
;
- Każdy plik w katalogu $ FILE z linkiem $ TAG (który nie powinien zawierać znaku
_
) ma link$TAG_$FILE -> ../$FILE
Pozostawiam locate-tag
tobie szczegóły skryptu; powinien być dwu- lub trzy-liniowy, używając tylko locate
hakerskiego polecenia i powłoki. (Jeśli jesteś zainteresowany, mógłbym napisać jeden).
Niektórzy faceci KDE mówili o tego rodzaju schemacie metadanych, chociaż nie pamiętam szczegółów.
Powinno być również możliwe wykonanie bardziej wyrafinowanych, sprawdzających zawartość testów opartych na tym schemacie z podobnym skryptem find
.
Myśli na temat zaktualizowanych wymagań
- każdy plik czytelny dla użytkownika może być dowolnie oznaczony - Tak, nie powinno być problemu
- użytkownik może wyszukiwać pliki pasujące do jednego lub kilku tagów - podobnie
- pliki można przenosić bez utraty uprzednio powiązanych tagów - katalogi, w których się znajdują, można swobodnie przenosić, ale jeśli plik zostanie przeniesiony z katalogu, mamy kłopoty. Jeśli tagi przyjęły formę
$TAG_$INODE_$FILE
i mamy skuteczny sposób na znalezienie ścieżek, które mają dany i-węzeł , możemy to zrobić, tracąc tagi tylko wtedy, gdy wyjdziemy z systemu plików. Kopiowanie plików może sprawiać problemy, a to jest znacznie bardziej skomplikowane niż moja pierwotna sugestia.
- kopię zapasową systemu można łatwo - nie jest to zasadniczo trudne.
- brak zależności od dowolnego środowiska pulpitu - brak
- jeśli w grę wchodzi jakieś GUI, musi nastąpić awaria cli - tam mieszkamy!
Postscript
Plik „look-inode-lookup” opisany przez link (2), który pokazałeś mi w odpowiedzi na (1), może być wykorzystany do zapewnienia dodatkowej infrastruktury. Możemy uruchomić usługę na pliku wyszukiwania wstecznego, który sprawdza, czy każdy i-węzeł podany w nazwie pliku znacznika jest zgodny z i-węzłem pliku (jeśli istnieje), na który wskazuje znacznik. Jeśli nie ma dopasowania, można wykonać wymaganą operację (czy i-węzeł nadal istnieje? Gdzie to jest?), A plik wyszukiwania wstecznego jest mutowany lub regenerowany, a dowiązania symboliczne znaczników są aktualizowane.
Przewiduję jeden trudny przypadek: co się stanie, jeśli oznaczony plik nie znajduje się w miejscu, w którym znaczniki mówią, że powinien być, plik wyszukiwania wstecznego mówi, że nadal istnieje, ale plik marnotrawny nie znajduje się w miejscu, w którym znajduje się plik wyszukiwania, ponieważ plik wyszukiwania jest poza data? Istnieje kilka sposobów radzenia sobie z tą sprawą, żaden oczywiście nie jest idealny. Poza tym to całe zadanie wydaje się być czymś, co Perl doskonale nadaje się do ...