GNU/Linux >> Linux の 問題 >  >> Linux

Linux コンソールでのファジー ファイル検索

これらの回答のほとんどは、崇高なテキストのようにあいまい検索を行いません。回答の一部に一致する場合がありますが、「この順序ですべての文字を検索する」という優れた動作は行いません。

これはあなたが望むものに少し近いと思います。あいまい検索を使用してターゲット ディレクトリを見つける特別なバージョンの cd ('fcd') をまとめました。とても簡単です -- これを .bashrc に追加するだけです:

function joinstr { local IFS="$1"; shift; echo "$*"; }
function fcd { cd $(joinstr \* $(echo "$*" | fold -w1))* }

これにより、入力の各文字の間に * が追加されるため、たとえば、

/home/dave/results/sample/today

次のいずれかを入力するだけです:

fcd /h/d/r/spl/t
fcd /h/d/r/s/t
fcd /h/d/r/sam/t
fcd /h/d/r/s/ty

例として最初のものを使用すると、これは cd /*h*/*d*/*r*/*s*p*l*/*t* を実行します 実際に一致するものをシェルに分類させます。

最初の文字が正しく、パス内の各ディレクトリから 1 文字が書かれている限り、探しているものが見つかります。おそらく、これをニーズに合わせて調整できますか?重要な点は次のとおりです:

$(joinstr \* $(echo "$*" | fold -w1))*

あいまい検索文字列を作成します。


fzf が役立つ場合があります。ファイル、プロセス、コマンド履歴、git ブランチなど、あらゆるリストで使用できる、Go で書かれた汎用のファジー ファインダーです。

そのインストール スクリプトは CTRL-T をセットアップします シェルのキーバインディング。次の GIF は、その仕組みを示しています。


私は通常使用します:

ls -R | grep  -i [whatever I can remember of the file name]

ファイルがあると思われる場所の上のディレクトリから - ディレクトリ ツリーの上位に行くほど、これは遅くなります。

正確なファイル名を見つけたら、find で使用します:

find . [discovered file name]

これは 1 行にまとめることができます:

for f in $(ls --color=never -R | grep --color=never -i partialName); do find -name $f; done

(ls と grep が "--color=auto" にエイリアスされていることに問題を発見しました)


Linux
  1. Linux –ファイルの作成日を見つける方法は?

  2. ファイルを見つけて、Linux でそのディレクトリに cd します

  3. Linuxはサイズ0のファイルを削除します

  1. Linuxでディレクトリを再帰的に検索および削除する方法

  2. Linuxでファイルを見つける方法

  3. Linuxはルートパーティションのみを検索/検索しますか?

  1. Linuxのディレクトリツリーで最も古いファイルを見つける方法

  2. 10Linuxでのファイル検索を改善するためのコマンドの検索[基本]

  3. Linuxで検索および検索コマンドを使用してファイルを検索する