ファイル検索を行うのは find コマンドですが、詳細な条件を使う場合にはオプションを駆使しないといけません。時々使う程度の場合、そんなオプションをすべて覚えている人はいないでしょう。毎回ヘルプに目を通さないといけません。 そんな作業を面倒に感じていた人はfselectを使ってみましょう。SQLライクな記述が可能なファイル検索ソフトウェアです。

fselectの使い方

例えば以下のような形です。拡張子がmdとなっているファイルを検索しています。結果として表示する情報も指定できます。

$ fselect size, path from /usr/local/Cellar/ where name = '*.md' limit 5
5232	/usr/local/Cellar/fselect/0.3.2/README.md	
1171	/usr/local/Cellar/git-lfs/1.4.1/LICENSE.md	
17914	/usr/local/Cellar/git-lfs/1.4.1/CHANGELOG.md	
4687	/usr/local/Cellar/git-lfs/1.4.1/README.md	
17103	/usr/local/Cellar/pyenv/20151222/CHANGELOG.md	

条件は幾つも組み合わせることができます。以上、以下と言った演算子を使う場合にはシェルのリダイレクトと被ってしまうので全体をダブルクォートで囲む必要があります。

$ fselect "size, path from /usr/local/Cellar/ where name = '*.md' and created >= '2018-01-01' limit 5"
5232	/usr/local/Cellar/fselect/0.3.2/README.md	
18700	/usr/local/Cellar/binaryen/42/README.md	
631	/usr/local/Cellar/heroku/6.15.13/libexec/node_modules/is-plain-obj/readme.md	
7488	/usr/local/Cellar/heroku/6.15.13/libexec/node_modules/plist/History.md	
3277	/usr/local/Cellar/heroku/6.15.13/libexec/node_modules/plist/README.md	

fselectを使うとファイルの検索を行って、その結果を取得するのが簡単になります。複数のディレクトリからまとめて検索することも可能です。検索条件は細かく指定できるので、複雑な条件(orを使ったものなど)でファイルを探したい時に便利です。

fselectはRust製のオープンソース・ソフトウェア(MIT License/Apache License 2.0のデュアルライセンス)です。

jhspetersson/fselect: Find files with SQL-like queries