Gnomeの最新ファイル機能に対応するCLI

Gnomeの最新ファイル機能に対応するCLI

Gnomeのファイルマネージャ(Nautilus)には、「仮想ディレクトリ」のように見える「最近のファイル」という機能があり、ユーザーのホームディレクトリから最新に作成/変更されたファイルを一覧表示します。

CLIでこれに相当するものを探しています。つまり、ナビゲーションは可能ですが、findコマンドの出力に基づいて動的結果を表示する仮想フォルダです。

電子メールを送信するにはemacsを使用し、各添付ファイルのパスを指定する必要があるため、別のフォルダから添付ファイルを送信するのは面倒です。最近作成/変更されたファイルがすべて含まれていることがわかっている仮想ディレクトリがある場合は、生活が良くなります。

あらかじめ作成されたツールがない場合は、ディレクトリfindから最新のファイルを検索し、findに出力されたファイルへの$HOMEシンボリックリンクを含む仮想フォルダを生成するコマンドを実行するスクリプトを作成し、それをcronとして実行するか、inotifyを使用します。

ただし、そのタスクを実行できるツールがすでにある場合は良いでしょう。

ベストアンサー1

これにより、最近使用したファイルが表示されます~/.local/share/recently-used.xbel(またはむしろ${XDG_DATA_HOME}/recently-used.xbel)そしてそれをすべて次のディレクトリに接続します~/recent

#!/bin/sh
set -e
mkdir -p ~/recent
rm -f ~/recent/*       # Make sure you don’t have anything you care about here
xmlstarlet sel -t -m '/xbel/bookmark[starts-with(@href, "file://")]' \
    -v 'substring(@href, 8)' -n ${XDG_DATA_HOME:-~/.local/share}/recently-used.xbel |
python -c "import sys, urllib as ul;
sys.stdout.write(ul.unquote(sys.stdin.read().replace('\n', '\0')));" |
xargs -0 ln -st ~/recent

これは以下を使用します。XMLスター最近使用されたドキュメントのリストからファイルURIを抽出し(他のURIは無視します)、改行をNULL文字に置き換えるPythonスクリプトに供給し、エスケープされたURIを逆参照します(例えば +または%20、スペースの代わりに、最後にすべてのxargsファイル名を指定しln(GNUバリアント)に供給してシンボリックリンクを作成します。

リンクは、ターゲットファイルが存在するかどうかに関係なく生成されます。最近使用したファイルのリストには、削除された一時ファイルが含まれることがよくあります。

おすすめ記事