fsq
(「ファイル システム クエリ」 - 発音は「フィスク」) ユーティリティは、SQL に似た式言語を使用してファイル システムに対してアドホック クエリを実行するためのツールです。これは、一度限りのスクリプトを作成せずに、特定の条件に一致するファイルを検索する場合に便利です。
ご使用のプラットフォーム用のバイナリをダウンロードし、コマンド ライン パスに追加します。
fsq
1 つの引数、つまり式を取ります。この式は次の部分で構成されます。
<attribute list> [not] in <locations> where <conditions>
「/data」ディレクトリの下にある、「hello」という文字で始まり 5 MB を超えるすべてのファイルを再帰的に検索するには、次のクエリを使用できます。
fsq "name in '/data' where name startswith 'hello' and size > 5m"
場所 (上記の場合、「/data」) が省略された場合、 fsq
デフォルトで現在のディレクトリーを使用します。
fsq "name where name startswith 'hello' and size > 5m"
複数の場所を指定することもできます。
fsq "name in '/opt', '/media' where size > 5m"
場所も除外される場合があります。次の例では、 .git
を除く現在のディレクトリ内のすべての場所で、文字列「implements MyInterface」を含むファイルが検索されます。
fsq "path not in '.git' where content contains 'implements MyInterface'"
属性リストは、 fsq
によって標準出力に出力される属性を指定します。上記の場合、これは単なるファイル名 ('name') です。次の例では、ファイルへのパスとサイズ (バイト単位) の両方を出力します。
fsq "path,size in '/opt' where size > 5m"
name
path
size
fsize
(属性リストで使用できますが、クエリはできません)content
(コンテンツを照会することはできますが、印刷用の属性リストに追加することはできません)modified
(形式: 'MM/DD/YYYY' または 'MM/DD/YYYY hh:mm:ss')sha1
sha256
md5
stats
(属性リストで使用できますが、クエリはできません)<
<=
>
>=
=
!=
startswith
endswith
isdir
(この演算子は引数を取りません)isfile
(この演算子は引数を取りません)contains
ignorecase
(その後に「=」、「!=」、「startswith」、「endswith」、または「contains」を続ける必要があります)matches
(正規表現一致)括弧、論理演算子、、、、およびnotを使用して条件をグループ化できます。例えば:
fsq "name in '.' where name startswith 'hello' or (isdir and not name startswith 'world')"
次のサイズ修飾子を整数値に追加して、デフォルト以外の単位を示すことができます。これらは、式でファイル サイズを指定する場合に特に便利です。整数にサイズ修飾子が追加されていない場合、 fsq
値をバイト単位で比較します。
たとえば、10 キロバイトを超え 1 メガバイト未満のすべてのファイルを検索するには、次のようにします。
fsq "path where size > 10k and size < 1m"
fsq
ビルドするにはgo
コンパイラーが必要です。 make
がインストールされている場合は、次のコマンドを使用してfsq
インストールできます。
make install
それ以外の場合は、 fsq
ディレクトリ内で次のコマンドを実行する必要があります。
go get golang.org/x/tools/cmd/goyacc
go install golang.org/x/tools/cmd/goyacc
goyacc parser.y
go install