SQLライクな文法でファイルを検索できるfselectが便利そう
id:anatooのブログ 2021年4月8日

SQL風の文法でファイルを検索できるfselectが便利そうだったので試してみた。macOSだとhomebrewからインストールできる。

$ brew install fselect

早速触ってみる

インストールできたらUsageを見つつ早速触ってみる。

今のディレクトリのファイルをすべてリストする。

$ fselect name from ./
app.log

where節では処理するファイルの条件を指定できる。

$ fselect "path from /home/user/tmp where size > 8kb"

fselectはただのコマンドなので、シェルスクリプトとして解釈される>等を使いたい場合にはきちんとクオートする。

$ fselect path from /home/user where name = '*.tmp'

ファイルをglobパターンで絞り込みもできる。pathだと相対パスになるので、フルパスを取得するには、abspathを使う。

$ fselect abspath from ./
/Users/anatoo/Workspace/fselect-sandbox/app.log

画像だけをリストするにはis_imageフィールドを使う。

$ fselect path from ./ where is_image = true

fselectで利用できるカラムやフィールドはColumns and fieldsに書いてある。

  • name ファイル名
  • path 相対パス
  • abspath 絶対パス
  • size ファイルサイズ
  • hsize or fsize KiBなどの単位付きのファイルサイズ
  • uid, gid, user, group, created, accessed, modified...

出力フォーマットを指定する

into節にJSONを指定するとJSONで吐き出してくれる。JSON以外にも、htmlやcsvなどに対応。

$ fselect name from ./ into json

Output formats

.gitignoreに配慮する

.gitignoreに記述したファイルを処理する対象から外したい場合には、from節の最後にgitignoreをつける。

$ fselect name from ./ gitignore

from節にはディレクトリの深さなども指定できる。

$ fselect name from ./ maxdepth 4 mindepth 1

hspetersson / fselect: Find files with SQL-like queries


久保田光則 (id:anatoo)

福岡在住のソフトウェアエンジニア・UI/UXデザイナー。RelayHub, LLCという会社をやっています。

   
© Mitsunori Kubota