この機能を提供しようとする新しいプログラムのアルファ版をリリースしました。現在、すべてではありませんが、一部の要件を満たしています。とにかく興味があるかもしれません。タグ付け用のコマンドライン ツールとブラウジング用の仮想ファイル システムを提供します (タグはディレクトリで表されます)。
http://www.tmsu.org/
<ブロック引用>ユーザーが読めるファイルには自由にタグを付けることができます
はい。
<ブロック引用>ユーザーは 1 つまたは複数のタグに一致するファイルを検索できます
はい。コマンドライン ツールを使用するか、仮想ファイル システムのタグ ディレクトリを参照してください。
<ブロック引用>以前に関連付けられたタグを失うことなく、ファイルを移動できます
いいえ。ただし、アプリケーションはタグ付けされたファイルのフィンガープリントを保存します。これは、移動されたファイルの識別に使用されます。移動したファイルのパスを更新する「修復」コマンドが提供されています。 (明らかに、ファイルが移動され、変更された場合、このメカニズムは機能しません。)
<ブロック引用>システムは簡単にバックアップできます
はい。シンプルな Sqlite 3 データベース ファイルです。
<ブロック引用>どのデスクトップ環境にも依存しません
はい。依存関係はなく、仮想ファイル システムとして実行できるため、シンボリック リンクをサポートする任意のプログラムでファイル システムとして閲覧できます。
<ブロック引用>GUI が関係している場合は、cli フォールバックが必要です
現在 GUI はありません。
どのような種類の検索が必要かは明確ではありません。ホームディレクトリだけでなく、UNIX のどこでも動作させたい場合、およびパス名ベースの検索のみを実行したい場合は、次のスキームが実行可能です。少しシェル ハッカーを使用し、標準の locatedb
:
.path-tags
など) が必要です。;_
を含めないでください) ) リンク $TAG_$FILE -> ../$FILE
があります
locate-tag
の詳細は残しておきます あなたへのスクリプト。 locate
のみを使用して、2 ライナーまたは 3 ライナーにする必要があります。 コマンドとシェルのハッキング。 (興味があれば、書きます)。
詳細は覚えていませんが、KDE 関係者の何人かがこの種のメタデータのスキームについて話しました。
find
にラップされた同様のスクリプトを使用して、このスキームに基づいて、より洗練されたコンテンツ検査テストを実行することも可能です。 .
更新された要件についての考え
<オール>$TAG_$INODE_$FILE
の場合 そして、どのパスが特定の inode を持っているかを効率的に見つける方法があるので、これを行うことができ、ファイルシステムの外に移動した場合にのみタグを失います。ファイルをコピーすると問題が発生する可能性があり、これは当初の提案よりも明らかに複雑です。あとがき (1)への回答で示したリンク(2)で説明されている「reverse-inode-lookup」ファイルを使用して、追加のインフラストラクチャを提供できます。タグのファイル名で指定された各 inode が、タグが指すファイル (存在する場合) の inode と一致することをチェックする、逆引きファイルでサービスを実行できます。一致するものがない場合は、必要な手術が実行され (inode はまだ存在するか? どこにあるのか?)、逆引き参照ファイルが変更または再生成され、タグのシンボリック リンクが更新されます。
1 つのトリッキーなケースが予想されます。タグ付けされたファイルがあるべき場所にない場合、逆引きファイルはまだ存在すると言いますが、放蕩ファイルはルックアップ ファイルが言う場所になく、ルックアップ ファイルが存在しません。日にち?このケースを処理する方法はいくつかありますが、明らかに理想的な方法はありません。これとは別に、このタスク全体は、Perl が適している種類のもののようです...
誰も言及していませんが、拡張ファイルシステムの属性を確認する必要があります。たとえば、ext4にはそれらがあります。それらに対処するためのツール getfattr および setfattr があります。もちろん、sometag でタグ付けされたファイルを検索するために、いくつかのシェル スクリプトを作成する必要があります。前述の質問に関しては、すべての答えが「はい」です。ファイル システムに依存していることだけを考慮してください。