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ファイルのファイル名とそのサイズをリストします.
-「2015-01-23 19:50:00」以降に作成されたpythonファイルをリストします.
-2015-01-23 19:50:00以降に作成されたpythonファイルと、README.mdというファイルを一覧表示
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を してください.