メインコンテンツへスキップ

find完全終了のお知らせ!? 超速くて使いやすい代替ツール「fd」が話題に

·3 分
2025/03 Fd Find コマンドラインツール ターミナル ユーティリティ

find完全終了のお知らせ!? 超速くて使いやすい代替ツール「fd」が話題に

引用元:https://news.ycombinator.com/item?id=43410692

snide 2025-03-19T13:36:46

sharkdpさんの大ファン!bat, fd, hexyl, hyperfine、毎日使ってるよ。マジ感謝!エンジニアのみんな、月10ドルずつでも良いから、sharkdpさんみたいな才能ある開発者を支援したら、インターネットはもっと良くなると思うんだ。素晴らしいツールがたくさんあるし、みんなでエコシステムをサポートしようぜ。

seafoamteal 2025-03-19T14:08:23

え、batとfdとhyperfineって全部同じ人が作ってるの?!マジか、どれもめっちゃ愛用してるんだけど。

jessekv 2025-03-19T15:29:58

David PeterはAstralで働いてるみたい。ripgrepのAndrew Gallantもいるし。RustのCLIツールにとって夢のチームじゃん。

1-more 2025-03-19T16:07:43

Andrew Gallant、別名BurntSushiのxsvにはマジで感謝しかない。長いファイルをN行ずつのチャンクに分割するのに、他にこんな便利なツールないもん。[1]標準のsed/head/tailじゃ無理だったんだよね。rust-csvライブラリのラッパーであるコマンドラインユーティリティを使ってたんだけど、RustでCSVパースが必要なら、このライブラリ超おすすめ。

singhrac 2025-03-19T18:59:16

watch ”xsv select … | xsv table”を何時間も見てたわ。

0cf8612b2e1e 2025-03-19T19:32:18

CSV処理自体はそんなに変わらないかもしれないけど、xsvリポジトリはしばらくメンテナンスされてないみたい。

chrishill89 2025-03-19T20:25:54

これはアクティブなフォークだよ: https://github.com/dathere/qsv

_blk 2025-03-22T06:14:53

フォークだって知らなかった。qsvはマジで最高。4Gbのファイルをたくさん解析して、マジで助かった。

wooptoo 2025-03-22T13:58:06

DSQってのもあるよ。独自の言語じゃなくてSQLを使うんだ。
https://github.com/multiprocessio/dsq

barotalomey 2025-03-19T19:51:55

ソフトウェアが機能的に完成してて、速くて、正常に動作してるなら、他に何を変える必要があるの?

0cf8612b2e1e 2025-03-19T20:30:25

えーと、未解決の問題が131件、PRが30件以上もあるってことは、みんな何かしら変更を望んでるってことだよね。作者さんを批判するつもりはないよ。僕なんかよりずっと生産的だし。でも、xsvは後回しにされてるみたいだね。オープンソースだから、作者さんは好きなように時間を使えるし、僕らは何も要求できないけどね。

danso 2025-03-19T16:02:50

まさに言おうと思ってたんだけど、fdとbatの作者は、burntsushi (xsv, rg)を思い出すね。*nixのコマンドラインのエコシステムに多大な貢献をしてるって意味で。

tandr 2025-03-20T02:31:33

uvを作ったAstralと同じ人たち?マジか、この人たちは「物事をめっちゃ速くする」ことに特化してるんだね!

kiney 2025-03-19T18:42:45

ちょっと話題がずれるけど、Astralはどうやってお金を稼いで開発者を養ってるんだろう?

Narushia 2025-03-19T20:33:51

Astralは主にベンチャーキャピタルから資金提供を受けてるんだ。トップのCharlieは、Astralのオープンソースツールとうまく連携できるサービスを開発して販売したいって何度か言ってたよ。でも、具体的なことはまだ何も決まってないし、発表もされてないけどね。

agumonkey 2025-03-19T14:23:20

良いユーティリティソフトの書き方のチュートリアルを書くか、教えるべきだよね。

seanw444 2025-03-19T15:00:43

彼のウェブサイトによると、やってるみたいだよ。
https://shark.fish/rustlab2019

gjvc 2025-03-19T18:07:44

https://github.com/sharkdp さんだね

terminaltrove 2025-03-19T16:14:19

完全に同意だよ。fdみたいなツールがもっと広まるといいね!うちらは前にfdの開発を支援したことがあって、たまにだけどTerminal Troveでターミナルツールの作者さんたちを支援してるんだ。今はzellijを支援してるから、ぜひチェックして応援してあげて!

wanderingmind 2025-03-19T22:28:24

Terminal Troveって知らなかった。めっちゃ役立つターミナルツールを集めててすごいね。これ、HNで別途投稿する価値ありそう。

もっとコメントを表示(1)
kstrauser 2025-03-19T18:35:05

zellijにはマジで同意。オレはずっとscreen使ってて、その後tmux使ってたんだけど、zellijはなんかシックリくるんだよね。マジで最高。

aaplok 2025-03-19T20:35:33

Zellijとtmuxの何がそんなに違うの?ゲームチェンジャーって感じ?

kstrauser 2025-03-20T04:18:52

他のプロジェクトと似てて、Zellijは初期設定がマジで良いんだよね。初めてZellijを起動すると、やりたいことのメニューが全部出てくる。あと、マウスホイールでのスクロールがデフォルトでサポートされてて、しかもほぼ100%ちゃんと動くのがデカい。tmuxとかscreenでできることが全部できるかは分からんけど、オレがやりたいことは全部できるし、設定もいらない。

aaplok 2025-03-20T10:16:23

へー、面白いね。オレがZellijを試したときは、メニューが多すぎてウザく感じたんだよね。tmuxとかscreenのミニマルなデザインの方が好き。最初は良いのかもしれないけど、ずっと使ってるとclippyみたいに邪魔にならないかなって思った。まあ、この機能がtmuxより優れてるって思う人がいるのも分かる。ソフトウェアの多様性って大事だね。

kstrauser 2025-03-20T14:26:49

それ、めっちゃ分かるわ。オレもEmacs使うけど、ツールバーとか全部オフにしてるし。tmuxヘビーユーザーってわけじゃないんだ。リモートマシンでセッションを維持したり、タブを切り替えたりするくらいかな。tmuxでそれ以上のことをしようとすると毎回マニュアル読まなきゃいけないけど、Zellijならメニューバーで簡単に発見できる。
結論:その通り!両方あって良かった!

joshbaptiste 2025-03-22T14:05:22

Zellijの唯一気に入らないデフォルト設定は、ctrl-qでインスタンス全体が終了すること。

jhbadger 2025-03-19T15:24:23

作者を特定してくれてありがとう。fdとbatの大ファンだけど、同じ人が作ったって知らなかった。他のツールもチェックしてみよう。

mgrandl 2025-03-19T14:37:00

numbatもチェックしてみてよ。マジでヤバいから。

stared 2025-03-19T15:16:47

興味ある人のためのリンク:https://github.com/sharkdp

numbers 2025-03-19T18:51:17

おれが使ってるリポジトリのスポンサーを簡単に見つけられる方法があればいいのになー。weztermとかatuinみたいな、プロジェクトの依存関係じゃないけど毎日使うツールとか。

makapuf 2025-03-19T19:29:48

オープンソースにお金を出すのは当然だよね(別のスレッドからframasoftをスポンサーした)。trillonaireやbillionaire企業が、自分たちが使ってるフリーソフトをどれだけスポンサーしてるかも考えようぜ。

alkh 2025-03-19T15:24:32

みんなterminaltrove.comを時々チェックすべきだと思う。find -> fd、time(ランタイム比較) -> hyperfine、grep->ripgrep、asciinema + .gif変換 -> t-rec[1]、手動でのconventional commits作成 -> koji[2]みたいな感じで、よく使うツールの簡単な代替品が見つかるよ。
[1]https://terminaltrove.com/t-rec/
[2]https://terminaltrove.com/koji/

tmtvl 2025-03-20T14:05:51

ライセンスでフィルタリングできると嬉しいな。できる限り非(A)GPLツールは避けたいんだよね。

johnisgood 2025-03-19T17:26:40

kojiは良いと思うけど、67桁の幅にこだわりたいんだよね。たぶんkojiじゃ無理?代わりにgit-cola使ってる。

alkh 2025-03-19T18:11:26

わかる。おれも同じ問題がある。koji -> gitlint -> git commit –amend –editって感じで幅の問題を修正してる。

imoreno 2025-03-20T02:35:18

kojiの代わりにaider --commitを使ってる。

enricozb 2025-03-19T15:33:10

fdとrgのフラグ、もうちょっとなんとかならんかなー。–typeとか、fdだとファイルの種類だけどrgだとMIMEタイプだったり。fdには–extensionがあるのにrgにはなかったりするし。どっちも使う人多いと思うから、似たような名前にしてくれたら嬉しいんだけどな。

hnlmorg 2025-03-19T17:00:01

正直、POSIXツールから離れられない理由の一つがこれなんだよね。新しいツールとそのフラグを覚えるのが面倒くさくて。もう体が覚えちゃってるし。新しいツール使うより、今のツールで我慢しちゃうかな。

burntsushi 2025-03-19T17:16:16

ripgrep作者だけど、それには納得いかないな。sedの-iフラグ使ったことある?あれPOSIXじゃないんだよ。POSIXツールって言うけど、実際はスーパーセット使ってるでしょ。findの-Lとgrepの-Rみたいに、フラグもバラバラだし。fdとripgrepは-Lで統一してるから、よっぽどマシだよ。

hnlmorg 2025-03-19T18:13:51

>ripgrep作者だけど、それには納得いかないな。sedの-iフラグ使ったことある?
あるよ。でも、そんなの例外じゃん。grepの話だし。sedは自分で作ったし。UNIXツールもめちゃくちゃだし。記憶の問題なのよ。新しいツールを覚える時間がないから。

もっとコメントを表示(2)
burntsushi 2025-03-19T18:24:05

まあ、そりゃそうかもね。ちょっと残念だけど、それもアリだよね。>面倒くさい
って言ってたし、それもわかるよ。

jrockway 2025-03-20T04:17:39

うん、わかるよ。自分もオッサンでめんどくさがりだけど、新しいツール試す時間はあるかな。findって、一発で思った通りに動いたことないんだよね。何年も使ってるのに。ツールが悪いんじゃないかって疑うべきかもね。

alwillis 2025-03-20T13:42:27

自分もオッサンでめんどくさがりだから、ezaとかbatとか新しいツール使ってるよ。なんで80年代のツールしか使えないみたいなことになってるの?

hnlmorg 2025-03-19T18:29:13

残念じゃないよ。現実的なだけ。子供もいるし、オープンソースのプロジェクトもやってるし、フルタイムの仕事もしてるし。時間がないから、一番インパクトのあることに集中してるんだ。

burntsushi 2025-03-19T18:40:06

いやいや、めっちゃ残念だよ!新しいことを学ぶのは良いことだと思うんだよね。ローカル最適に陥りやすいし。自分も子供とか色々あるけど、時間見つけてやってるよ。tmuxとかzshとか。

hnlmorg 2025-03-19T18:42:04

君のシェルを学ぶ時間があるなら、ripgrepを学ぶ時間を作るよ! https://murex.rocks
最近tmux control modeについて学んだよ。

burntsushi 2025-03-19T19:04:11

マジかよ、それフェアじゃなくね? ripgrepはGNU grepと互換性のあるコマンドで、使い方も簡単だよ。でも、ちょっと時間かけてdotfilesの一部を移植してみた。
起動時間が結構かかるのが気になる。もしかして環境の問題かな?
>ああ、新しいことを学ぶのは全然ウェルカムだよ。
え、さっきのコメントと矛盾してない?

hnlmorg 2025-03-19T19:17:51

起動時間の最適化はまだなんだ。インタラクティブシェルがメインだからね。PowershellとかJVMみたいな感じで、インタラクティブに使えば起動は一回だけだし。でも、改善の余地はあるかも。
>え、さっきのコメントと矛盾してない?
そんなことないよ。新しいことを学ぶのは嫌じゃないけど、覚えちゃったツールの代わりは探したくないだけ。
とりあえずripgrep使ってみるよ。

burntsushi 2025-03-20T02:56:34

最初はシェルスクリプトから入るのが良いと思ったんだ。それからインタラクティブな使い方に移行する感じで。エラーメッセージはすごくいいね。
最近、標準じゃないシェルも検討してるんだよね。Bourne shellとその派生は好きじゃないけど、zshはまだマシかな。fish, nushell, oilsも候補だけど、nushellは前試したときなんか合わなかった。

hnlmorg 2025-03-20T08:53:17

シェルを変えるのは大変だよね。デフォルトのままなのも無理ないよ。ripgrepも最初は乗り気じゃなかったし。Murexとripgrepの交換はフェアじゃなかったけど、試してくれて感謝してるよ。

ziml77 2025-03-19T18:04:29

ripgrepに置換機能があって助かる。sedの標準じゃないファイル内置換に悩まなくて済むし。MacにGNU sedをインストールすることもできるけど、どうせならripgrepの方が良いよね。

burntsushi 2025-03-19T18:18:41

残念だけど、ripgrepは書き込みしないんだ。-r/–replaceオプションは出力だけを制御して、ファイルの中身は変えないよ。

ziml77 2025-03-19T19:25:38

え、前はそれで置換できた気がしたんだけど、勘違いかな? replaceオプションがあって嬉しかったのは覚えてる。
そうか、ripgrepが書き込みしないなら、ミスでファイルを壊す心配もないのか。

robenkleene 2025-03-19T20:11:31

ripgrepの出力をファイルに書き込むツール(rep-grep)と、fdの出力でファイル名を変更するツール(ren-find)を作ってるよ。

burntsushi 2025-03-20T01:45:34

>ripgrepが書き込みしないなら、ミスでファイルを壊す心配もないのか。
そう、まさにそれが理由。
-r/–replaceフラグはsedやawkの代わりになることもある。少なくとも俺はそう。

thiht 2025-03-20T08:38:22

sedは最悪のPOSIXツールのひとつだね。簡単そうに見えて、いつも期待通りに動かない。やりたいことに合わなかったり、そもそも対応してなかったり(特に複数行の置換とか)。sdに乗り換えたら、毎回期待通りに動くようになったよ。

ForTheKidz 2025-03-20T02:20:05

ripgrepってマジでunixのツールボックスのめんどい問題を解決してくれてるよねー。ファイルの検索方法がいちいち違うの何なの?find -name -execとかfind -name | xargs -n 1とか?しかもファイル名にスペース入ってたらfind -name -print0 | xargsとか試さないといけないけど、-print0はPOSIXじゃないから一部のunixでは使えないし!locate vs slocate vs mlocateとかマジ勘弁!ファイル関係マジでクソ。

sweeter 2025-03-19T23:57:59

tab補完とtldrがあるじゃん。大体のケースはそれでカバーできるし、フラグ名見れば大体わかるし。CLIツールが優秀ならね。例えば”fd -e png -x optimize-png {}”とか簡単じゃん。fdの嫌なところは、”Downloads”の中身全部見たい時に”fd . Downloads”って書かないといけないところかな。パターン省略させてほしい。

renewiltord 2025-03-19T17:10:25

互換性維持してるからこそ問題が起きるんだよねー。fdとfind -typeは同じ意味だけど、この人は違う意味で使いたいんだもん。AI shell completion使ってるから、もっとスムーズだけどね。

derriz 2025-03-19T21:41:59

fdとrg毎日使ってるけど、マジでこれイライラするんだよね。フラグが部分的に一致してたりするから、もっと混乱するんだよね。例えば、globパターンよく使うんだけど、fdとrgで-gフラグの挙動が違うし。fdの-gフラグは”full-path” globbingじゃないけど、rgの-gはそう(逆かも)。fdでrgみたいなglob使うには-pフラグも必要だし。rgも-p認識するけど、全然違う意味だし。今更互換性崩さずに直すのは無理だよね。

もっとコメントを表示(3)
thayne 2025-03-20T01:57:51

難しいバランスだよね。–typeの例で言うと、rgとは一貫性がないけど、findとはほぼ一貫性がある。fdの–typeオプションはrgよりもfdの方が便利だし。grepするファイルをディレクトリやソケットに絞るのは意味ないけど、ファイル名検索とか特定のファイルを検索するなら便利だもん。rgの–typeオプションはfdだと、そこまで便利じゃないし。fdはファイル名に対してパターンマッチしてるから、拡張子を検索パターンに追加すればいいだけだし。–exyensionフラグもあるし。

laktak 2025-03-19T23:26:46

フラグじゃなくてSQL使って覚えやすくしたよー。https://github.com/laktak/zfind

terminaltrove 2025-03-19T21:42:16

もしfd、bat、numbat、hexyl、hyperfineを試したいなら、Terminal Troveで簡単にインストールできるし、スクリーンショットも見れるよ!fdはhttps://terminaltrove.com/fd/、batはhttps://terminaltrove.com/bat/、numbatはhttps://terminaltrove.com/numbat/、hyperfineはhttps://terminaltrove.com/hyperfine/、hexylはhttps://terminaltrove.com/hexyl/だよ。スクリーンショット付きでインストールできるように頑張ってるんだ。

andy_xor_andrew 2025-03-19T23:15:56

クールなサイトだね!スクリーンショットの代わりにasciicinemaを使うのってどうかな?君たちがやろうとしてることにピッタリだと思うよ。https://asciinema.org/

archon810 2025-03-22T15:49:29

このサイトのいくつかのツールをクリックしてみたけど、全部デモのGIFがあったよ。terminaltroveは、自分たちで作るんじゃなくて、プロジェクト自体から持ってきてるんじゃないかな。

nchmy 2025-03-20T18:27:47

もっといろいろツールを試してみたいなぁ。最近はmise(リストにもあるね)で全部インストールしてるんだ。miseコマンドがあると嬉しいな。「mise use -g fd」とか、レジストリにないツールなら「mise use -g cargo:xyztool」みたいなバックエンドの使い方とか。

d0mine 2025-03-20T18:08:00

https://github.com/xtermjs/xterm.jsみたいなのを使えば、TUIアプリのインタラクティブなセッションを見せられるかもね。

jwrallie 2025-03-19T22:05:41

良い提案だね!numbatとhyperfineは絶対試してみるよ(fdは毎日使ってる)。batは長いパイプ処理の最後に使うと便利かもね。xxdが好きだからhexylはパスかな。

rednafi 2025-03-19T15:08:47

bat、exa、fdみたいな最近のRust製のツールをなかなか使い始められない理由の一つは、オリジナルのオプションをほとんど覚えられないからなんだよね。
俺にとっては、オリジナルのツールのドロップイン・リプレースメントじゃないと、摩擦に見合わないんだ。VS Codeの中ではripgrepを使ってるけど、コマンドラインでは長年の筋肉記憶でvanilla grepを使ってるし。
とは言え、ツールが何語で書かれていようと、動けば気にしないよ。お気に入りのUnixツールの一つにGNU Stowがあるけど、Perlで書かれてるし。これらのRustツールがドロップイン・リプレースメントだとしても、手動でインストールしようとは思わないだろうな。ユーザーとしては、速度の向上やメモリ安全性は、あんまり重要じゃないんだ。
Goみたいにメモリ安全性が保証されてる言語もあるし、Goのパフォーマンスはツールには十分すぎるくらいだよ。しかも、コミュニティからの参加も得やすいし。だから、「Rustこそ救世主」みたいな話には、全然納得できないんだよね。
とは言え、macOSやUbuntuが、OGツールをRust製の代替ツールにそっくりそのまま置き換えたとしても、ワークフローが邪魔されなければ、文句は言わないと思うよ。

jhbadger 2025-03-19T15:31:04

>One reason I haven’t picked up any of these newfangled Rust tools like bat, exa, or fd is that I can barely remember the options for the originals.”
まさにそれが新しいツールを使う理由だよ。特にfdはfindよりもずっと分かりやすい。UNIXを30年以上使ってるけど、findは全然ピンとこなかった。

TylerE 2025-03-19T23:36:32

告白すると、findを使ったことと言えば、ツリーを歩いてgrepにパイプして探してるだけだ。

quinncom 2025-03-20T02:09:47

fdはほとんどのタスクで便利だけど、findより面倒なこともある気がする。例えば、キャッシュディレクトリの中のファイルを全部削除するのに、見つけられた一番簡単な構文はこれだった。
fd -t f -X rm {} ; ^ cache
これ、めっちゃ怖いんだよね。だからいつもfindに頼っちゃう。
find cache -type f -delete
これなら何十年も使ってるから安心できるんだ。fdでこれと同じくらい安心できる方法ってないかな?

orlp 2025-03-20T07:41:15

fd -t f . cache -X rm --って書くと、findでファイル検索して、cacheディレクトリの中から.にマッチするファイルを見つけて、見つかったファイルを引数にしてrm --を実行するのと同じ意味になるよ。ファイル名が-で始まる場合でも、オプションとして解釈されないから安全だよ。絶対パスを使いたい場合は-aオプションも使えるけど、今の例だと相対パスでも問題ないと思うよ。

quinncom 2025-03-21T01:06:02

確かにその方が安全そうだね。-Xオプションを最後に書けるって知らなかった。マニュアルには「Usage: fd [OPTIONS] [pattern] [path]…」って書いてあるから、パスは最後に書かないといけないと思ってた。

whompyjaw 2025-03-19T15:18:02

ツールがどの言語で書かれてるかなんてマジでどうでもいい。良いツールなら使えばいいんだよ。fdはほぼ全ての面でfindより優れてる。デフォルト設定もイケてるし、めっちゃ速いし、オプションも簡単(忘れたらcht.sh使えばOK)。俺はfindを使う理由がマジでない。新しいシステムに入ったら、まずfdをインストールする。

syklemil 2025-03-20T07:35:42

>ツールがどの言語で書かれてるかなんてマジでどうでもいい。
いやいや、言語は結構大事だよ。fdrgみたいなツールは、Javaで書かれた同じようなツールがJVMを起動する前に終わっちゃうことだってあるし。Java製のソフトはたくさんあるけど、CLIの世界では全然見かけないよね。
>俺はfindを使う理由がマジでない。新しいシステムに入ったら、まずfdをインストールする。
今度こそfind $path -name '*.$ext' -exec nvim {} +を置き換える方法を探してみるか…って、fd -e $ext -X “nvim” “” $pathでいけるのか。

graynk 2025-03-20T16:21:17

ちょっと話が逸れるけど、cargoが優秀すぎて、最近はRust製のツールをインストールするのにパッケージマネージャーの代わりに使ってる。

thesuperbigfrog 2025-03-19T18:53:18

>オリジナルのツールのドロップインリプレースメントにならないものは、摩擦が大きくて使う価値がない。
uutilsプロジェクトは、一般的なコマンドラインユーティリティをRustで再実装するプロジェクトです。既存のユーティリティとの完全な互換性を維持しながら、モダンなユーティリティを目指しています。Linuxの必須ツールを全て置き換える予定です。” uutilsはUbuntu 25.10で採用されるらしい。

rednafi 2025-03-19T19:55:11

全面的に賛成。Ubuntuがそれを採用して、互換性の問題が何も起こらないなら、みんなにとってWin-Winだね。

d0mine 2025-03-20T18:27:26

それって、IPアドレスが“フレンドリー”とみなされない限り、基本的なコンピューターユーティリティを使えないってこと?Gnu utilsの方がアクセスしやすい(長期的には自由度が高い)気がする。

記事一覧へ

海外テックの反応まとめ
著者
海外テックの反応まとめ
暇つぶしがてらに読むだけで海外のテックニュースに詳しくなれるまとめサイトです。