fql——File Query Language


言語のコンパイルの復習、練習として、最近SQLのような小さな言語FQLを実現し、SQLの文法でファイルのクエリーを完成しました.pythonで実現したもので,PLY解析器を用いた.FQLの現在のバージョンは0.1.0で、サポートされているfeatureは限られています.
1)ファイルのプロパティ:
-name:ファイル名
-ctime:ファイル作成時間
-mtime:最終変更日
-atime:最終アクセス時間
-size:ファイルサイズ
2)集計関数:
- count
- sum
- max
- min
3)使い方:
-インタラクティブコマンドライン解析:
python fql.py
各行はコマンドとして実行されます
-1回に1つのコマンドを実行
python fql.py "select * from . where name like '%.py$'"
4)例:
-現在のフォルダとサブフォルダのファイルを一覧表示します.
        > python fql.py 'select * from .'
        > -----------------------------------------------------------------------------------------------------
          | name                | ctime               | mtime               | atime               | size      |
          -----------------------------------------------------------------------------------------------------
          | accu_func.py        | 2015-01-22 16:05:07 | 2015-01-22 16:05:07 | 2015-01-23 19:53:00 | 2.21K     |
          -----------------------------------------------------------------------------------------------------
          | accu_func.pyc       | 2015-01-23 19:53:00 | 2015-01-23 19:53:00 | 2015-01-23 19:53:00 | 5.87K     |
          -----------------------------------------------------------------------------------------------------
          | fql.py              | 2015-01-23 19:24:58 | 2015-01-23 19:24:58 | 2015-01-23 19:53:00 | 1.44K     |
          -----------------------------------------------------------------------------------------------------

-すべてのpythonファイルのファイル名とそのサイズをリストします.
        > python fql.py 'select name, size from name like "%.py$"'
        > -----------------------------------
          | name                | size      |
          -----------------------------------
          | accu_func.py        | 2.21K     |
          -----------------------------------
          | fql.py              | 1.44K     |
          -----------------------------------

-「2015-01-23 19:50:00」以降に作成されたpythonファイルをリストします.
        > python fql.py 'select * from name like "%.py$" and ctime > 2015-01-23 19:50:00'
        > -----------------------------------------------------------------------------------------------------
          | name                | ctime               | mtime               | atime               | size      |
          -----------------------------------------------------------------------------------------------------
          | fql.py              | 2015-01-23 19:54:50 | 2015-01-23 19:54:49 | 2015-01-23 20:01:31 | 1.41K     |
          -----------------------------------------------------------------------------------------------------
          | parsetab.py         | 2015-01-23 19:53:00 | 2015-01-23 19:53:00 | 2015-01-23 19:54:00 | 17.87K    |
          -----------------------------------------------------------------------------------------------------

-2015-01-23 19:50:00以降に作成されたpythonファイルと、README.mdというファイルを一覧表示
        > python fql.py 'select * from (name like "%.py$" and ctime > 2015-01-23) or name = "README.md"'
        > -----------------------------------------------------------------------------------------------------
| name | ctime | mtime | atime | size | ----------------------------------------------------------------------------------------------------- | fql.py | 2015-01-23 19:54:50 | 2015-01-23 19:54:49 | 2015-01-23 19:57:25 | 1.41K | ----------------------------------------------------------------------------------------------------- | parsetab.py | 2015-01-23 19:53:00 | 2015-01-23 19:53:00 | 2015-01-23 19:54:00 | 17.87K | -----------------------------------------------------------------------------------------------------
          | README.md           | 2015-01-23 20:00:53 | 2015-01-23 20:00:53 | 2015-01-23 20:00:53 | 3.94K     |
          -----------------------------------------------------------------------------------------------------

-すべてのpythonファイルの サイズを します.
        > python fql.py 'select sum(size) from . where name like "%.py$"'
        > -----------------------------------------
          | sum(st_size)    | 38.54K              |
          -----------------------------------------

- したファイルの をリストします.
        > python fql.py 'select max(ctime) from .'
        > ------------------------------------------
          | max(st_ctime)    | 2015-01-23 20:07:49 |
          ------------------------------------------

5)インストールと
plyに してeasy_を インストール
easy_install ply

にpython fqlを する.pyでいい
、fqlは で んでいるおもちゃで、その は えず され、 で に つツールになるように しています. なコードはgithubを してください.