Windowsでファイルを検索するとき、思うような結果が得られないことがよくあります。
特に、標準的な方法ではもどかしさを感じることも多いでしょう。
PowerShellの標準コマンドは機能が豊富です。
しかし、直感的でなく覚えにくいという欠点があります。
本記事では、そんな悩みを解決する「fd」というコマンドラインツールについて解説します。
この便利なツールを使えば、ファイル検索が格段に効率的になるでしょう。
fdコマンドとは
fdは、簡潔さと速度を重視したファイル検索ツールです。
Unixの「find」コマンドに代わるものとして開発されました。
より直感的なシンタックスと優れたデフォルト設定を備えています。
名前の由来は「find」の頭文字と最後の文字をとったものと言われています。
そのため、コマンド名自体も短く簡潔になっています。
主な特徴は以下の通りです。
- 直感的な構文(fd パターン で検索可能)
- 正規表現とグロブパターンによる検索
- 並列ディレクトリ走査による高速な検索
- ファイルタイプごとの色分け表示
- .gitignoreファイルのパターンを自動的に除外
- 隠しファイルやディレクトリを標準では検索対象外に
PowerShellのGet-ChildItem(エイリアス:dir、ls)と比較すると大きな違いがあります。
fdは使い方がシンプルで結果が見やすく、検索速度も圧倒的に速いのです。
Windowsへのインストール方法
fdをWindowsにインストールするには複数の方法があります。
最も簡単なのはパッケージマネージャーを使う方法です。
Scoopを使ったインストール
Scoopがインストールされている場合は、以下のコマンドでfdをインストールできます。
scoop install fd
Chocolateyを使ったインストール
Chocolateyを使用している場合は、次のコマンドを実行します。
choco install fd
Wingetを使ったインストール
最新のWindows環境ではWingetが利用できます。
こちらを使ってインストールするのも便利です。
winget install fd
手動インストール
公式のGitHubリリースページからも入手できます。
実行ファイルをダウンロードし、PATHの通っているディレクトリに配置するだけです。
基本的な使い方
fdの使い方は非常にシンプルです。
最も基本的な使い方は、検索したい文字列をパラメータとして渡すだけです。
単純な検索
例えば、「project」という文字を含むファイルやディレクトリを探したい場合は次のようにします。
fd project
これにより、現在のディレクトリ以下を再帰的に検索します。
そして、「project」を含む名前のファイルやディレクトリが表示されます。
PowerShellの同等のコマンドは以下のようになります。
明らかに複雑ですね。
Get-ChildItem -Recurse -Path . | Where-Object { $_.Name -like "*project*" }
特定の拡張子を検索
特定の拡張子のファイルだけを検索したい場合があります。
そんなときは-e(または–extension)オプションを使用します。
例えば、すべてのPythonファイルを検索する場合はこうします。
fd -e py
これは、カレントディレクトリ以下のすべての.pyファイルを表示します。
特定のディレクトリから検索
検索を開始するディレクトリを指定することも可能です。
次のように使います。
fd pattern C:\Users\MyName\Documents
高度な検索テクニック
fdには、より高度な検索を可能にする様々なオプションがあります。
それぞれの用途に応じて使い分けましょう。
隠しファイルを含めた検索
デフォルトでは、fdは隠しファイルやディレクトリを検索対象から除外します。
隠しファイルも検索したい場合は、-H(または–hidden)オプションを使用します。
fd -H config
これにより、.gitディレクトリ内の設定ファイルなども検索できるようになります。
.gitignoreされたファイルを含めた検索
Gitリポジトリ内では特別な動作をします。
デフォルトで.gitignoreに記載されたパターンに一致するファイルは除外されます。
これらのファイルも検索対象に含めたい場合は、別のオプションが必要です。
-I(または–no-ignore)オプションを使いましょう。
fd -I node_modules
パスの完全一致による検索
デフォルトでは、fdはファイル名のみを検索対象とします。
しかし、ファイルパス全体をパターンマッチングの対象にしたいこともあるでしょう。
その場合は、-p(または–full-path)オプションを使用します。
fd -p src/components
検索結果に対するコマンド実行
見つかったファイルに対して何らかの操作を行いたいことがあります。
そんなときは-x(または–exec)オプションを使って外部コマンドを実行できます。
例えば、すべてのMarkdownファイルの内容を表示する場合は次のようにします。
fd -e md -x type
複数のファイルが見つかった場合、コマンドは並列に実行されます。
逐次実行したい場合は、–threads=1オプションを追加しましょう。
すべてのファイルを一度に処理したい場合は別のオプションがあります。
-X(または–exec-batch)オプションを使うと便利です。
fd -e md -X notepad
これにより、見つかったすべてのMarkdownファイルがNotepadで開かれます。
他のツールとの連携
fdの真価は、他のツールと組み合わせたときに発揮されます。
いくつかの連携例を見てみましょう。
fzfとの連携
コマンドラインファジーファインダー「fzf」と組み合わせると強力です。
インタラクティブなファイル検索が可能になります。
PowerShellのプロファイルに以下の設定を追加すると良いでしょう。
$env:FZF_DEFAULT_COMMAND = 'fd --type file'
これにより、fzfを起動すると別の効果が生まれます。
fdの検索結果がファジー検索の対象となるのです。
エディタとの連携
エディタとの連携も便利です。
特にVisual Studio Codeとの相性が良いでしょう。
例えば、VSCodeで特定の拡張子のファイルをすべて開くには次のようにします。
fd -e json -X code
まとめ
fdコマンドは、Windowsでのファイル検索を格段に効率化してくれます。
日常的な開発作業やファイル管理がスムーズになるでしょう。
PowerShellの標準コマンドと比較すると多くの利点があります。
直感的で覚えやすく、高速に動作するのです。
特にフロントエンド開発では真価が発揮されます。
多数のファイルを扱うプロジェクトでぜひ活用してみてください。
基本的な検索から高度なパターンマッチング、他ツールとの連携まで様々な使い方ができます。
fdコマンドを日常のワークフローに取り入れてみてはいかがでしょうか。
単に検索が速くなるだけではありません。
コマンドラインでの操作がより楽しく、生産的なものになるはずです。