Diredでファイルを検索する方法はいくつかあります。用途によって使い分けるのがよいです。
目次
1. Dired内でファイル名を検索する
最も簡単なのは、
C-s
です。
Diredで C-s を押して検索文字列を入力すると、現在のDired一覧からファイル名をインクリメンタル検索できます。
2. ファイル名を検索して一覧を絞り込む
Diredでファイル名を正規表現で検索したいなら、
M-x dired-mark-files-regexp
が使えます。
例えば、
.*\.org$
と入力すると、.org ファイルをマークできます。
その後、
t
でマークしたファイルだけを表示することもできます。
ただし、検索結果だけを一覧として表示したい場合には、find-name-dired のほうが適しています。
3. サブディレクトリも含めてファイル名を検索する
例えば、
~/git_copy/
以下から
*.org
を探したい場合は、
M-x find-name-dired
を使います。
すると、
Find name: *.org
のように入力できます。
例えば、
~/git_copy/
と
*.org
を指定すると、サブディレクトリも含めて .org ファイルを探し、結果をDiredバッファとして表示します。
4. find を使って検索する
より細かい条件で検索したい場合は、
M-x find-dired
です。
例えば、
find . -type f -name "*.org"
のような find コマンドを実行して、その結果をDiredとして扱えます。
5. ファイルの「内容」を検索する場合
これはファイル名検索とは別です。
例えば、
org-roamという文字列を含むファイルを探したい
なら、Diredよりも grep / rgrep が適しています。
Emacsでは、
M-x rgrep
を使えます。
例えば、
Search for: org-roam
File pattern: *.org
Base directory: ~/git_copy/
とすれば、ディレクトリ以下の .org ファイルの内容を検索できます。
まとめ
| 目的 | 操作 |
|---|---|
| Dired一覧からファイル名を探す | C-s |
| 正規表現に一致するファイルをマーク | M-x dired-mark-files-regexp |
| サブディレクトリも含めてファイル名検索 | M-x find-name-dired |
find コマンドで高度な検索 | M-x find-dired |
| ファイルの中身を検索 | M-x rgrep |
今のDired設定なら
普段の操作としては、
C-s
を現在表示しているDiredの一覧から探す用途に使い、
M-x find-name-dired
をディレクトリ以下を再帰的に探す用途に使う、という使い分けが分かりやすいです。