私は自分のファイルにタグを付け、それらのタグに基づいてファイルを検索/フィルタリングする方法を探していました。
これが私の(updated)要件です:
私はこれを処理するためにいくつかの基本的なファイルシステムとcoreutilsハッカーを望んでいましたが、これについてはまだ十分に考えていません。
その間に、ここで言及したビーグルとメタトラッカーを確認し、それらがどのように機能するかを確認します。
ビーグルには大きなgnome依存関係があり、トラッカーは大丈夫ですが、それでも私が気に入らない依存関係がいくつかあります...
さらに調査を行っており、その方法は 拡張ファイル属性 である可能性があります。
これは最近のほとんどのファイルシステムのネイティブソリューションですが、まだ十分にサポートされていません(ほとんどのcoreutilsはデフォルトでそれらを破棄します。たとえば、cpはそれらを保持するために-aフラグを必要とします)。これは新しい質問に値するかもしれませんが、自分でハックを試してみながら、それらを使用することについての考えを聞きたいと思います。
どのような検索が必要かは明確ではありません。ホームディレクトリだけでなく、UNIXのどこでも機能させたい場合、パス名ベースの検索のみを実行したい場合は、次のスキームが機能します。少しのシェルハッカーを使用し、標準のlocatedb
:
.path-tags
;_
を含むことはできません)を持つディレクトリ$ FILE内の各ファイルには、リンク$TAG_$FILE -> ../$FILE
があります。locate-tag
スクリプトの詳細はあなたにお任せします。 locate
コマンドとShellハッカーのみを使用して、2行または3行にする必要があります。 (興味があれば、私が書いてもいいです)。
詳細は思い出せませんが、KDEの一部の人物がメタデータのこの種のスキームについて話しました。
また、find
で囲まれた同様のスクリプトを使用して、このスキームに基づくより洗練されたコンテンツ検査テストを実行することもできます。
更新された要件に関する考え
$TAG_$INODE_$FILE
で、 特定のiノードを持つパスを見つける効率的な方法 がある場合、これを行うことができ、ファイルシステムから移動した場合にのみタグが失われます。ファイルをコピーすると問題が発生する可能性があり、これは元の提案よりも明らかに複雑です。Postscriptリンクで説明されている「reverse-inode-lookup」ファイル (2) への回答に私を示しました- (1) を使用して、追加のインフラストラクチャを提供できます。タグのファイル名で指定された各iノードが、タグが指すファイル(存在する場合)のiノードと一致することをチェックする逆ルックアップファイルでサービスを実行できます。一致しない場合、必要な手術を実行でき(inodeがまだ存在しますか?どこにありますか?)、逆ルックアップファイルが変更または再生成され、タグシンボリックリンクが更新されます。
私は1つのトリッキーなケースを予想します:タグ付きファイルがあるべき場所にタグ付けされたファイルがない場合、逆ルックアップファイルはまだ存在すると言いますが、放棄ファイルはルックアップファイルが言うところになく、ルックアップファイルはありません日付?このケースを処理する方法はいくつかありますが、明らかに理想的な方法はありません。これとは別に、この全体のタスクは、Perlが適しているようなものです...
この機能を提供しようとする新しいプログラムのアルファ版をリリースしました。現在、すべてではなく一部の要件を満たしています。それはとにかくあなたに興味があるかもしれません。タグ付けのためのコマンドラインツールとブラウジングのための仮想ファイルシステムを提供します(タグはディレクトリで表されます)。
ユーザーが読み取り可能な任意のファイルに自由にタグを付けることができます
はい。
ユーザーは1つまたは複数のタグに一致するファイルを検索できます
はい。コマンドラインツールを使用するか、仮想ファイルシステムのタグディレクトリを参照します。
以前に関連付けられたタグを失うことなく、ファイルを移動できます
いいえ。ただし、アプリケーションは、移動されたファイルの識別に役立つタグが付けられたファイルのフィンガープリントを保存します。移動したファイルのパスを更新する「修復」コマンドが提供されています。 (ファイルが移動および変更された場合、明らかにこのメカニズムは機能しません。)
システムは簡単にバックアップできます
はい。シンプルなSqlite 3データベースファイルです。
デスクトップ環境に依存しない
はい。依存関係はなく、仮想ファイルシステムとして実行できるため、シンボリックリンクをサポートする任意のプログラムでファイルシステムとして閲覧できます。
gUIが含まれている場合は、CLIフォールバックが必要です
現在GUIはありません。
誰も言及していませんが、拡張ファイルシステムの属性を確認する必要があります。たとえばext4にはそれらがあります。それらに対処するためのツールgetfattrとsetfattrがあります。もちろん、sometagでタグ付けされたファイルを検索するために、いくつかのシェルスクリプトを記述する必要があります。言及された質問に関しては、すべての回答が「はい」です。ファイルシステムに依存していることだけを考慮に入れる必要があります。
誰も言及していないことに驚いた TagSpaces 。タグはファイル名に保存され、TagSpacesはクロスプラットフォームなので、すべての要件を満たします。
これはmightがすべての要件を満たしていると思います。いずれにせよ、それはクールなコードです:
http://pages.stern.nyu.edu/~marriaga/software/oyepa
GUIにはQtが必要ですが、検索用のコマンドラインアプリケーションがあり、すべてのタグが実際にファイル名に含まれているため、CLIからタグ|ファイルを操作するのは簡単です。
タグ付けライブラリであるNepomukのためにKDEデスクトップ全体をインストールする必要はおそらくないでしょう。ただし、KDEベースライブラリをインストールする必要があります...
他のいくつかの代替案は tagasistant 、 tagfs または dantalian です。
Linuxデスクトップ検索ツール に関するこの最近の記事は、 Tracker がタグ付けをサポートしていることを述べています。残念ながら、彼らがテストした古いバージョンでは半分壊れているはずです。多分それは今修正されていますか?
したがって、GNOME、コマンドライン、またはLinuxの他の場所でNepomuk統合を見つけることはできません。
逆に、Trackerではkde統合AFAIKは見つかりません。 CLIではわかりません。
残念ながら、答えは「いいえ」のようです。
さらに残念なことに、これは1つを構築する良い機会があることを意味しません。 Linuxコマンドラインユーティリティは、たとえばGUIファイルマネージャとあまり共通点がないため、アーキテクチャ上、概念をサポートするために拡張できる共通のコンポーネントはありません。
この目的のためにSQLiteを使用する小さなプログラムを作成しました。それは私のニーズを解決しましたが、おそらくあなたにも役立ちます:
https://github.com/alvatar/dfym
このアプローチの唯一の問題は、移動や削除と同期しないことですが、比較的静的なファイルの問題を解決します。
TMSUは、ファイルにタグを付けるためのツールです。タグを適用するための簡単なコマンドラインユーティリティと、他のプログラムからのファイルのタグベースのビューを提供する仮想ファイルシステムを提供します。
TMSUがファイルを変更することはありません。ファイルは、ディスクまたはネットワーク上でどこに置いても変更されません。 TMSUは独自のデータベースを維持し、追加のビューを取得するだけで、設定したタグに基づいて、好きな場所にマウントできます。
誰もそれについて言及していないことに驚いた。