SQL文でファイル検索が出来るGO製のコマンドラインツール「fsql」の紹介です。

普段PCを使っていて、" コマンドライン上からファイルを検索 " をする機会は少ないですが、
SSHなどでサーバーにリモートアクセスし、CLI上で操作する時には よくある事の1つです。

Unix系OSで コマンドライン上でファイルを検索するには " find "コマンドが用意されていますが、
細かな条件をつけて検索となると 少々慣れが必要です。
* fgrepや除外パスなど )

# findコマンドを使ったファイル検索の例 
find projectFolder -type f -name "*.json" ! -path "node_modules"


findをコマンドを使わない場合は ' cd DIR名 ls pwd 'のコマンドを使い回して
ファイルを探している人も多いのではないでしょうか。

そんなファイル探しを データベースをお使いの人には お馴染みの
SQL構文で検索できるコマンドラインツールが「fsql」です。

* fsql

 

fsqlで出来ること

SQL構文でファイルの検索が出来る
 

fsqlのインストール

fsqlはGO言語で作成されており、パッケージとして提供されているので、
インストールにはコマンドライン上から ' go get ' コマンドを使ってインストールします。

# go getを使ってインストールする場合
$ go get -v github.com/kshvmdn/fsql

# 正しくインストールされていると'fsql'コマンドが使えるようになります
$ fsql
Expected query.

 

fsqlの使い方

fsqlの使い方は簡単で ' fsql "SQLクエリ" ' で使うことができます。

下のスニペットはfsqlを使った最低限の使い方で、
カレントディレクトリ直下で ファイル名が".json"で終わるファイルを検索しています。

# LIKE文を使って .jsonで終わるファイルを検索
fsql "SELECT * FROM . WHERE name LIKE '%.json'"
# ファイル名が決まっている場合 *実行結果はファイル名とサイズを返す
# fsql "SELECT name, size FROM . WHERE name = package.json" 

# fsqlが持っているデータ属性
name : ファイル名
size : ファイルのサイズ
mode : ファイルのパーミッション
time : ファイルの作成日時

* 'json'ファイルを検索した実行結果

上の実行結果の画像を見たとおり、上記の'json'ファイルで検索すると、
jsonファイル全てにヒットするので、目当てのファイルを探すのも一苦労です。

そういう時の為に fsqlには指定したファイルを検索から除外するオプションも用意されています。

# 'node_modules' と 'vendor'ディレクトリを検索から除外して'json'ファイルを検索
fsql "SELECT * FROM . , -node_module, -vendor  WHERE name LIKE '%.json'"

* 指定したディレクトリを検索から除外した検索結果


その他にも AND検索で条件を増やしたり、ファイルサイズの比較演算正規表現も使用可能です。

# sizeを指定して '.python'で終わるファイルを検索する例
fsql "SELECT * FROM . WHERE name LIKE '%.python' AND (size >= 10.5kb OR size < 100)"

# 用意されているオペレーター
WHERE / LIKE / RLIKE / AND / OR / NOT / IS
# 比較演算
> >= < <= = <>

 

Summary

以上が fsql の紹介でした。

実際に自身の環境(Mac)に入れて使ってみましたが、
特に開発でデータベースを普段から使っている(SQLに慣れている) プログラマーさんは
直感的に使えるコマンドラインツールだと感じました。

サーバーに fsql を導入しておくと役に立つ場面も多いと思うので、
気になった人はゼヒ×2チェックしてみてください!

GitHub : kshvmdn/fsql

 

この記事のカテゴリ

プログラミング

この記事のタグ

Go , 効率化

Socialシェアボタン

スポンサーリンク