ファイルに名前よりも多くの属性を与えることができるコマンドラインツールはありますか?たとえば、名前が、、、のようなタグをubuntu.pdf
指定するファイルがありcommand-line
、、、、のタグがあるファイルがあります。shell
nautilus
my_favourite_stuff
whatever_else
linux.pdf
shell
command-line
ln
best_book
私は命令が欲しい
$ tagged shell
出力されます
file: path_to/ubuntu.pdf, path_to/linux.pdf
related_tags: command-line(2), shell(1), nautilus(1),...
関連タグは番号順に並べ替えられ、特定の関連タグを持つファイルの数を示します。コマンドラインでタグクラウドとして機能します。
コマンドライン(ハードリンク、シンボリックリンク、シェルスクリプトなどを使用)でこの動作を実行できますか?
答え1
Linuxファイルシステムには、拡張属性の機能があります。スティーブンは彼の答えに次のようにマークしました。。
ただし、さまざまな種類の多くの(おそらくほとんど)グラフィックエディタは、「安全」をクリックしてもファイルを切り捨てず、同じファイルに新しいコンテンツを埋めません。代わりに、新しいファイルを作成し、名前を元のファイル名に変更します。
この操作では、これらの拡張ファイル属性がファイル名ではなく実際の最後のファイルを必要とするため、失われます。
したがって、ファイルシステムベースだけでは、このようなものを「安全に」実装することはできません。データベースが必要で、ファイル名をタグにマップする必要があります。
だから写真や曲などのデータベースはありますが、一般的なファイルのデータベースはないようです。
書くのは難しくありません。 sqliteはシェルスクリプトやPython、C ++、またはGoでこのような単純なデータベースを作成するのに使いやすいですが、それ以外の人はいません。
おそらく、GnomeがTrackMinerの形で提供したようなオリジナルのデスクトップ検索エンジンに固執する必要があるかもしれません!
答え2
拡張属性にラベルを保存できます(参照:man setfattr
そしてman getfattr
詳細については)これらのコマンドを使用してタグナビゲーションコマンドを実装します。拡張属性を使用すると、属性を添付ファイルと共にコピー/移動できるという利点があります(例えばLinuxで使用されますcp --preserve=all
)。
主な欠点は、タグクラウドを構築するために関心のあるすべてのファイルの拡張属性をリストする必要があるため、費用がかかる可能性があることです。