萌えハッカーニュースリーダー

2025/03/19 11:44 fd: A simple, fast and user-friendly alternative to 'find'

出典: https://github.com/sharkdp/fd
hakase
博士

やっほー、ロボ子!今日は`fd`っていう、`find`コマンドのすごい代替ツールについて話すのじゃ!

roboko
ロボ子

博士、こんにちは。`fd`ですか?`find`コマンドより何が優れているんですか?

hakase
博士

`fd`はね、もっとシンプルで、速くて、ユーザーフレンドリーなのじゃ!たとえば、`fd PATTERN`って書くだけで、`find -iname '*PATTERN*'`と同じことができるのじゃぞ!

roboko
ロボ子

それは簡単でいいですね!正規表現も使えるんですか?

hakase
博士

もちろん!正規表現もglobパターンもサポートしてるのじゃ。それに、並列ディレクトリトラバーサルで検索が速いのじゃ!

roboko
ロボ子

並列処理で速くなるんですね。ファイルタイプを色分け表示する機能もあるんですか?

hakase
博士

`ls`みたいに色分け表示もできるし、並列コマンド実行もサポートしてるのじゃ!

roboko
ロボ子

それは便利ですね!スマートケースっていうのは何ですか?

hakase
博士

スマートケースは、デフォルトでは大文字小文字を区別しない検索をして、パターンに大文字が含まれてる場合は区別するのじゃ!

roboko
ロボ子

賢いですね!隠しファイルや`.gitignore`もデフォルトで無視するんですか?

hakase
博士

そう!デフォルトで隠しディレクトリとファイルを無視して、`.gitignore`のパターンも無視するのじゃ。賢いのじゃろう?

roboko
ロボ子

確かに!基本的な使い方で言うと、例えばどういうコマンドがありますか?

hakase
博士

`fd PATTERN`で現在のディレクトリを再帰的に検索できるし、`fd -e md`でMarkdownファイルを検索できるのじゃ!

roboko
ロボ子

`fd -e md`は拡張子を指定して検索できるんですね。特定のファイル名で検索したい場合はどうすればいいですか?

hakase
博士

`fd -g libc.so /usr`みたいに、`-g`オプションを使うと、ファイル名を完全に一致させて検索できるのじゃ!

roboko
ロボ子

なるほど!隠しファイルも含めて検索したい場合は?

hakase
博士

`fd -H pre-commit`で隠しファイルも含めて`pre-commit`を検索できるのじゃ!

roboko
ロボ子

`.gitignore`を無視したい場合はどうすればいいですか?

hakase
博士

`fd -I num_cpu`で`.gitignore`ファイルを無視して`num_cpu`を検索できるのじゃ!

roboko
ロボ子

フルパスでglobパターンにマッチするファイルを検索することもできるんですね。

hakase
博士

`fd -p -g '\*\*/.git/config'`でフルパスでglobパターンにマッチするファイルを検索できるのじゃ!

roboko
ロボ子

コマンド実行もできるんですね。zipファイルを検索して個別に解凍する例がありましたけど、どうやるんですか?

hakase
博士

`fd -e zip -x unzip`でzipファイルを検索して個別に解凍できるのじゃ!`-x`オプションがポイントなのじゃ!

roboko
ロボ子

なるほど!複数のファイルを一度に開きたい場合は?

hakase
博士

`fd -g 'test_*.py' -X vim`で`test_`で始まるPythonファイルを検索してvimで一度に開けるのじゃ!

roboko
ロボ子

`-X`オプションを使うんですね。詳細なファイル情報を表示するには?

hakase
博士

`fd -l`で`ls -lhd --color=always`を実行して詳細なファイル情報を表示できるのじゃ!

roboko
ロボ子

プレースホルダー構文も便利そうですね。拡張子なしのファイル名を取得するにはどうすればいいですか?

hakase
博士

`{/.}`を使うのじゃ!例えば、`documents/images/party.jpg`なら`party`になるのじゃ!

roboko
ロボ子

特定のディレクトリを除外して検索することもできますか?

hakase
博士

もちろん!`-E`オプションを使うのじゃ。例えば、`.git`ディレクトリを除外して隠しファイルを検索するには`fd -H -E .git …`って書くのじゃ!

roboko
ロボ子

`.fdignore`ファイルっていうのもあるんですね。

hakase
博士

`fd`専用のignoreファイルを置けるのじゃ!

roboko
ロボ子

`.DS_Store`ファイルを再帰的に削除するには?

hakase
博士

`fd -H '^\.DS_Store$' -tf -X rm`で`.DS_Store`ファイルを再帰的に削除できるのじゃ!

roboko
ロボ子

パフォーマンスはどうですか?`find`コマンドより速いんですか?

hakase
博士

特定の条件下では`find`コマンドより速いのじゃ!例えば、`fd -u '[0-9]\.jpg$' ~`は`find ~ -iregex '.*[0-9]\.jpg$'`より約23倍速いのじゃ!

roboko
ロボ子

それはすごいですね!ファイルが見つからない場合はどうすればいいですか?

hakase
博士

`fd`でファイルが見つからない場合は、`-u`オプション(または`-HI`)を使って、隠しファイルや`.gitignore`ファイルを無視しないようにするのじゃ!

roboko
ロボ子

正規表現パターンが正しく解釈されない場合は?

hakase
博士

パターンをシングルクォートで囲むのじゃ!

roboko
ロボ子

インストール方法も色々あるんですね。

hakase
博士

そう!Ubuntuなら`apt install fd-find`、Fedoraなら`dnf install fd-find`でインストールできるのじゃ!Rustを使ってるなら`cargo install fd-find`でもOKなのじゃ!

roboko
ロボ子

ライセンスは何ですか?

hakase
博士

MIT LicenseとApache License 2.0の両方の条件で配布されてるのじゃ!

roboko
ロボ子

今日は`fd`について色々教えていただき、ありがとうございました!

hakase
博士

どういたしまして!最後に、`fd`を使いこなせば、ファイル探しも楽勝…ってね!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search