14
Linuxであいまいファイル検索を行う方法

Linuzデスクトップでファイルを探す際、お気に入りのファイルマネージャーの検索機能に頼ることが多いでしょう。従来の検索方法は、完全一致検索を適用し、検索文字列に完全に一致するファイルまたはディレクトリのみを表示するというものです。 

一方、あいまい検索は近似値検索を実行し、完全一致ではなくキー入力ごとに一致する結果を表示します。fzfユーティリティは、汎用的なあいまい検索ツールとして知られています。MITライセンスの下でリリースされているこのクロスプラットフォームツールは、あらゆるLinuxフレーバーで使用できます。

Linuxにfzfをインストールする

Linuxでのあいまいファイル検索

(画像提供:Tom's Hardware)

最新リリースであるバージョン 0.29.0 は、Fedora、Manjaro、openSUSE Tumbleweed、Ubuntu、Debian、Arch などの最新リリースのディストリビューションでのみ提供されていますが、他のほとんどのディストリビューションではリポジトリに古いバージョンが保存されています。

Debian / Ubuntuシステムにインストールするには

1.ターミナルを開きます。

2.リポジトリのリストを更新します。これにより、最新のソフトウェアを確実に入手できます。

sudo apt update

3. apt パッケージ マネージャーを使用して f2f をインストールします。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

sudo apt install f2f

ソフトウェアリポジトリを使用する以外にも、Mac用のパッケージマネージャーHomebrewを使用するなど、fzfをインストールする方法はいくつかあります。もちろん、Gitを使ってプロジェクトのディレクトリをハードディスクにクローンし、インストールスクリプトを使ってfzfをインストールすることもできます。パッケージマネージャーではなくGitを使用する利点は、最新版を入手できることです。

Git経由でインストールするには

1.ターミナルを開きます。

2.リポジトリをクローンします。

git clone --depth 1 https://github.com/junegunn/fzf.git

3.ダウンロードした Git リポジトリにディレクトリを変更します。

cd fzf

4.インストール スクリプトを実行します。

./install

fzfツールは自動補完と様々なキーバインドをサポートしています。インストールスクリプトは、これらを有効にするかどうかを尋ね、~/.bashrcファイルの編集も提案します。有効にすると、以下のキーバインドを使ってfzfを起動できるようになります。

スワイプして水平にスクロールします

キーバインド関数ヘッダーセル - 列2
Ctrl+R$HISTFILEに基づいて最近のコマンド履歴を検索する行0 - セル2
Ctrl+T$PWD内のファイル名を再帰的に検索する行1 - セル2
Alt+C$PWDの下のディレクトリ名を再帰的に検索し、選択したディレクトリにcdします。行2 - セル2

fzfの操作

Linuxでのあいまいファイル検索

(画像提供:Tom's Hardware)

fzf ツールは単なるファインダーなので、単独で起動するのはあまり意味がありません。代わりに、 cd などの他のコマンドと組み合わせて使用​​したり、 vim や nano などのテキストエディタでファイルを開いたりすることができます。 

それを試す前に、まずは簡単なことから始めましょう。

1.ターミナルを開きます。

2. Alt+Cを押すと、ディレクトリ検索機能が起動します。この機能は現在の作業ディレクトリ(PWD)内でのみ動作します。デフォルトでは、ターミナルはホームディレクトリで開きます。

3.対話型プロンプトが読み込まれるまで待ちます。初回の読み込み時は、fzf がデータをキャッシュするのに少し時間がかかる場合があります。

4.ディレクトリ名(例:Videos)を入力します。対話型プロンプトが開き、入力した単語に一致するディレクトリが表示されます。

5. Enterキーを押してディレクトリを変更します。複数のエントリがある場合は、上下の矢印キーを使ってハイライト表示し、Enterキーを押して選択します。

何も見つからない場合は、CTRL + CまたはESC を押してfzf を終了します。 

fzfタブ補完の使用

fzf は、すべてのターミナルコマンドでタブ補完の代替として使用できます。fzf タブ補完を呼び出すには、コマンドに ** 識別子を付ける必要があります。ここでは、cd(ディレクトリ変更コマンド)で fzf タブ補完を使用し、検索条件に一致するすべてのディレクトリを一覧表示しています。

Linuxでのあいまいファイル検索

(画像提供:Tom's Hardware)

1.ターミナルを開きます。

2. cdコマンドを入力し、スペースキーを押し、続けて**を2つ押します。その後、Tabキーを押してタブ補完を開始します。

cd **<TAB>

3.ディレクトリを検索します。この例では「Pictures」を検索しました。入力すると、fzf は検索語に一致するディレクトリを検索します。矢印キーを使ってエントリのリストをスクロールできます。

4. Enter キーを押してディレクトリを選択し、もう一度 Enter キーを押してディレクトリを変更します。

タブ補完のもう 1 つの例としては、kill コマンドと一緒に使用して、特定のアプリケーション/プロセスを対象にしてそれを強制終了することが挙げられます。

1.ターミナルを開きます。

2. killコマンドでタブ補完を使用します

kill -9 **

3.アプリケーション/プロセスを検索します。Inkscapeがバックグラウンドで実行されていたので、それを検索することにしました。

4.矢印キーを使用して正しいプロセスを選択しEnter キーを押して選択します。

5. Enter キーを押して、指定したプロセスで kill コマンドを実行します。

検索の強化

Linuxでのあいまいファイル検索

(画像提供:Tom's Hardware)

デフォルトでは、fzf は拡張検索モードで起動します。つまり、スペースで区切られたキーワードを入力して、探しているファイルまたはディレクトリを絞り込むことができます。 

ただし、検索結果を改善するためにさまざまなテクニックを活用することもできます。ここでは、ファイル名検索を使ってPythonファイルを検索します。

1.ターミナルを開きます。

2. lessと入力し、Ctrl + Tを押してfzfのファイル名検索ツールを開きます。ファイルを表示するには、 lessを使用します。lessにはページ区切り機能と大量のテキストをスクロールするためのツールが組み込まれています。

3.ファイル拡張子(この場合は .py)を入力し、行末にドル記号を追加します。

.py$

4.矢印キーを使用して正しいファイルを選択し、Enter キーを押して選択します。

5. Enterキーを押してlessを使ってファイルを開きます。  検索 

さらなる機能強化の表

スワイプして水平にスクロールします

トークン説明
文字列を検索
''弦引用符で囲まれた文字列を含む項目の完全一致を実行します
^文字列^LXFプレフィックス完全一致を実行して LXF で始まる項目をリストします
.フォーマット$.odt$接尾辞の完全一致を実行して、.odt形式で終わるファイルを一覧表示します。
!弦!dhc逆完全一致を実行して、dhc を含まないアイテムをリストします
!^文字列~^LXF逆プレフィックス完全一致を実行して、LXF で始まらない項目をリストします。
!.フォーマット$!.odt$逆サフィックス完全一致を実行して、.odt形式で終わらないファイルをリストします。

このチュートリアルは、Linux Format マガジンの第 287 号に最初に掲載されました。