L'utilitaire fsq
(« file system query » - prononcé « fisk ») est un outil permettant d'effectuer des requêtes ad hoc sur un système de fichiers à l'aide d'un langage d'expression de type SQL. Ceci est utile pour rechercher des fichiers qui correspondent à certains critères sans écrire un script unique pour le faire.
Téléchargez le binaire pour votre plateforme et ajoutez-le à votre chemin de ligne de commande.
fsq
prend un seul argument : l'expression. Cette expression est composée des parties suivantes :
<attribute list> [not] in <locations> where <conditions>
Pour rechercher de manière récursive tous les fichiers du répertoire « /data » commençant par les caractères « bonjour » et dépassant 5 Mo, la requête suivante peut être utilisée :
fsq "name in '/data' where name startswith 'hello' and size > 5m"
Si l'emplacement (dans le cas ci-dessus, '/data') est omis, fsq
sera par défaut le répertoire actuel :
fsq "name where name startswith 'hello' and size > 5m"
Plusieurs emplacements peuvent également être spécifiés :
fsq "name in '/opt', '/media' where size > 5m"
Des emplacements peuvent également être exclus. Dans l'exemple suivant, tous les emplacements du répertoire actuel, à l'exception de .git
seront recherchés pour les fichiers contenant la chaîne « implémente MyInterface » :
fsq "path not in '.git' where content contains 'implements MyInterface'"
La liste d'attributs spécifie quels attributs sont imprimés en standard par fsq
. Dans le cas ci-dessus, il s'agit simplement du nom du fichier (« nom »). L'exemple suivant imprimera à la fois le chemin d'accès au fichier et sa taille (en octets) :
fsq "path,size in '/opt' where size > 5m"
name
path
size
fsize
(peut être utilisé dans la liste d'attributs, mais ne peut pas être interrogé)content
(le contenu peut être interrogé, mais ne peut pas être ajouté à la liste d'attributs pour l'impression)modified
(format : 'MM/JJ/AAAA' ou 'MM/JJ/AAAA hh:mm:ss')sha1
sha256
md5
stats
(peut être utilisé dans la liste d'attributs, mais ne peut pas être interrogé)<
<=
>
>=
=
!=
startswith
endswith
isdir
(cet opérateur ne prend aucun argument)isfile
(cet opérateur ne prend aucun argument)contains
ignorecase
(doit être suivi de '=', '!=', 'startswith', 'endswith' ou 'contains')matches
(correspondance d'expressions régulières)Les parenthèses ainsi que les opérateurs logiques ou , et , et not peuvent être utilisés pour regrouper des conditions. Par exemple:
fsq "name in '.' where name startswith 'hello' or (isdir and not name startswith 'world')"
Les qualificatifs de taille suivants peuvent être ajoutés à des valeurs entières pour indiquer des unités autres que celles par défaut. Celles-ci sont particulièrement utiles lors de la spécification de tailles de fichiers dans des expressions. Si aucun qualificatif de taille n'est ajouté à un entier, fsq
compare la valeur en octets.
Par exemple, pour rechercher tous les fichiers supérieurs à 10 kilo-octets et inférieurs à 1 mégaoctet :
fsq "path where size > 10k and size < 1m"
Le compilateur go
est requis pour construire fsq
. Si vous avez installé make
, fsq
peut être installé avec :
make install
Sinon, les commandes suivantes devront être exécutées dans le répertoire fsq
:
go get golang.org/x/tools/cmd/goyacc
go install golang.org/x/tools/cmd/goyacc
goyacc parser.y
go install