2013-09-26 17 views
14

ファイル名はよく知っていますが、覚えていないか、正確なディレクトリを指定するのが面倒です。私はfind *ファイルx/y/*/some_file.txtを実行できるようにしたいと思っています*ここで*は現在のディレクトリの代わりに再帰的なディレクトリを検索することができます。ディレクトリ内でファイルを再帰的に見つけるには

+1

このようなパスの拡張には2つの潜在的な危険性があります:1つ以上の有効な拡張がある場合、試行するパスが多すぎる可能性があります(特にディレクトリループがある場合)まあ、 'find-name-dired'のようなものを使うだけです。 –

答えて

0

Iciclesコマンドicicle-locate(ご使用のOSにlocateプログラムがない場合は、icicle-locate-file)が作成されます。 Locate a file anywhere under a given directory~HOMEまたはルートディレクトリを含む)。

絶対ファイル名(パスとファイル名)の任意の部分と照合することができます。正規表現、部分文字列、ファジーのマッチングなど、さまざまな種類のマッチングを使用できます。

5

ido-find-fileはこれを行います:あなたが入力したファイル名が現在のディレクトリに 何も一致しない場合、それはあなたのシステム上のすべてのファイルに対して書いたもの に一致するようlocateのようなものを使用しています。

セットアップは、単に1つのラインである。この後

(ido-mode) 

C-XのC-Fido-find-fileを呼び出します。私はそれが好きなので

(setq ido-enable-flex-matching t) 

、それをあなたはlocate以上の結果は、 すなわちfoofrooに一致するだろう: はまた、私は通常追加します。

+0

これは再帰的には見つかりません。それは現在のディレクトリ内のファジー検索だけです! Flplrはより良い – mythicalcoder

1

編集:私はprojectileとよく似ています。私の他の答えを見てください。

見つける-recursive.elがある:http://www.webweavertech.com/ovidiu/emacs/find-recursive.txt

は、それをダウンロードして、あなたのロードパスに入れて、あなたの.emacsでそれを必要とする:(それはELPAまたはからは利用できませんEL-取得)

(require 'find-recursive)  

Mx find-recursiveを呼び出すと、再帰的に検索するファイル名、ベースディレクトリが要求され、結果リストの中から1つのファイルを選択する必要があります。それは残念ながらidoに統合されていませんが、私はそれが好きです、それは時々有用です。

2

プロジェクトディレクトリにあるファイルの場合、同じ著者がファジー検索ライブラリを使用するFiplrを使用しました。

https://github.com/d11wtq/fiplr

これはMELPAから入手可能です。私はhelm-projectileを使用しています:私は試していない

他の解決策は、私は長い間、その機能のために見てきたと私は今、私が見つけたものに満足していhttps://github.com/technomancy/find-file-in-project

+0

これは軽量で目的を果たします。 – mythicalcoder

5

です。

Projectileは、プロジェクト対話ライブラリです。プロジェクトはVCSディレクトリまたは.projectileファイルを含むディレクトリです。(あなたがpackages.elとそれをインストールすることができます)を見つける(純粋なEmacsはあまりにも実装を提供していますLISP)

https://github.com/bbatsov/projectile

GNUに基づいています。単独で使用することもできます:projectile-find-file(またはprojectile-modeおよびC-c p f)に電話してください。デフォルトでは完了のためにidoが使用されていますが、その場合は私はhelm-projectileというインターフェースを好んでいます。

私の同僚は、その機能のために崇高なテキストを使用するように指示し続けました。幸いにも、私は発射体を発見しました:)

+0

弾丸は素晴らしいです。使いやすく、簡単です。 – gosukiwi

1

ここでは、検索されたファイルやサブディレクトリに対して選択性を与えるソリューションです。それを使用するにはDired+Iciclesの両方が必要です。

Diredでのみ使用されるコマンドは、icicle-visit-marked-file-of-content-recursive(またはそれの-other-windowバージョン)です。 M-+ C-Fにバインドされています(他のウィンドウの場合はM-+ C-Oを使用してください)。大文字の場合はFOです。

それは何:diredはいる

  • それは完成のための候補として、提供し、任意のマークのサブディレクトリには、現在のdiredのディレクトリにマークされたファイルをすべて、pslusそれらのすべてバッファ、等々。

  • すべてのミニバッファ入力に一致する任意の数の候補を訪問することができます。ミニバッファの入力パターンと一致するものを訪問し、パターンを変更して他のものにアクセスすることができます。これらはすべて同じコマンド呼び出しで行います。

  • "Matching" your input can mean either or both

    あなたの入力は(二部に分離することができ、あるファイルコンテンツ

マッチング

  • ファイル名をマッチング
  • C-M-jを打つことによって:ファイルn ame部分とファイル内容部分で構成されています。ファイル名を照合して選択肢を絞り込み、それらのファイルのテキストを照合してさらに絞り込みます。この検索は高速です。ファイル内で1つの一致が見つかるとすぐに成功します。

    どちらの部分も省略することができます:ファイル名のみ(高速)またはファイル内容(緩やか、自然)と一致させることができます。

  • 入力パターン - progressive completionを組み合わせることができます。あなたが望むものだけを扱う単一の正規表現を思いつくことよりも、パターンを追加したり、段階的かつインタラクティブに追加する方がはるかに簡単です。

  • 各入力パターン(2つの部分からなるパターンの各部分)は正規表現にすることができます。ファジーマッチングも利用できます。

  • 別のDiredバッファではなく、Diredバッファにサブディレクトリを挿入することもできます。Diredバッファにマークされているファイルとサブディレクトリは同じ方法で処理されます。

    あなたがマークされているサブディレクトリに降りたくない場合は、あなたが(他のウィンドウのためC-OC-Fにバインドされたコマンド、icicle-visit-marked-file-of-contentの非再帰的なバージョンを使用することができます。あなたもBookmark+を使用する場合は

は、あなたはdiredバッファまたはのdiredバッファのセットをブックマークすることができます。ブックマークは、どのファイルとサブディレクトリがマークされているか、サブディレクトリはどのファイルとサブディレクトリが省略されているかを記録します。このようなブックマークにジャンプすると、これらのすべてが復元されます。

M-x find-name-dired 

ディレクトリやパターンを提供した後、一致するファイルはで表示されます。これは、あなたが、その後

15

としてはhereを説明などM-+ C-Fを使って検索することができたプロジェクトを、スナップショットする方法を提供します消えたバッファー。ファイルリスト(C-nC-pなど)をナビゲートし、必要に応じてファイルを開くことができます(Ret)。あなたはこのようなあなたの.emacsに入れることができます

find-file-in-current-directory 

;; Find file in current directory: 
(global-set-key (kbd "C-M-,") 'find-file-in-current-directory) 

Interfaceは、使う人には非常に見慣れ

関連する問題