macOS/Linuxでfdとbatをインストール:ファイル検索・シンタックスハイライトcat・rg連携
fd/batを入れ、最初の検索とハイライト表示を実行し、rgとパイプでつなぐ。
リポジトリで find と cat だけだとすぐ限界が来ます。fd と bat は Rust 製の後継で、fd は .gitignore を尊重しつつ名前や拡張子でパスを探し、bat は cat にシンタックスハイライトと行番号を足します。本稿は macOS/Linux のインストール、fd で探す、bat で読む、rg/grep と組み合わせる を hereink 向けにまとめます。
検索語はmacOS/Linux で fd と bat CLI をインストールする方法。両コマンドを入れ、最初の fd / bat を実行し、ファイル列挙と内容検索をパイプでつなげられる状態にします。
fd と bat が解くこと
日常の find 替わり
find . -name '*.ts' は長く node_modules も踏みがち。fd は既定で再帰し無視規則を読み、-e / -t で絞れます。
読みやすい cat
bat src/main.rs で言語検出とハイライト。--paging=never でページャ無効。
公式:
github.com/sharkdp/fd、github.com/sharkdp/bat。fd --versionとbat --versionで確認。
macOS / Linux にインストール
- 1macOS(Homebrew)
brew install fd bat。which fd batで確認。 - 2Debian / Ubuntu
sudo apt update && sudo apt install fd-find bat。実行ファイルがfdfindの場合はalias fd=fdfind。 - 3Fedora / Arch
sudo dnf install fd batまたはsudo pacman -S fd bat。 - 4任意:Rust
cargo install fd-find bat。
fd でファイルを探す
fd config
fd -e tsx
fd -t f README
fd -i dockerfilebat で表示
bat src/lib/utils.ts
bat --paging=never Dockerfile
bat -n package.jsongrep / ripgrep (rg) と組み合わせ
| 目的 | 例 | メモ |
|---|---|---|
| 拡張子で絞って検索 | fd -e py | xargs rg "def main" | fd で .py、rg で中身 |
| 検索してハイライト表示 | rg -l "TODO" src | xargs bat | ファイル名だけ rg -l |
| grep でも可 | fd -e sh | xargs grep -n "set -e" | rg が無い環境向け |
- 向く
- monorepo で設定・脚本・ログを毎日触る開発者。
- 向かない
- IDE 一括リファクタ。Windows は scoop 等(README 参照)。
Ubuntu で fd ではなく fdfind?
Debian 系は fd-find パッケージで fdfind になることがあります。alias fd=fdfind で対応。
bat は cat の完全代替?
人間が読む用途向き。パイプでは bat --paging=never --plain か cat を使う。
fd と find?
mtime や権限など複雑条件は find。名前・拡張子の素早い列挙は fd。