La utilidad fsq
('consulta del sistema de archivos', pronunciada 'fisk') es una herramienta para realizar consultas ad hoc en un sistema de archivos utilizando un lenguaje de expresión similar a SQL. Esto es útil para encontrar archivos que coincidan con ciertos criterios sin escribir un script único para hacerlo.
Descargue el binario para su plataforma y agréguelo a la ruta de su línea de comando.
fsq
toma un único argumento: la expresión. Esta expresión se compone de las siguientes partes:
<attribute list> [not] in <locations> where <conditions>
Para buscar recursivamente todos los archivos en el directorio '/data' que comienzan con los caracteres 'hola' y tienen más de 5 MB, se puede utilizar la siguiente consulta:
fsq "name in '/data' where name startswith 'hello' and size > 5m"
Si se omite la ubicación (en el caso anterior, '/data'), fsq
utilizará de forma predeterminada el directorio actual:
fsq "name where name startswith 'hello' and size > 5m"
También se pueden especificar varias ubicaciones:
fsq "name in '/opt', '/media' where size > 5m"
También se pueden excluir ubicaciones. En el siguiente ejemplo, se buscarán archivos que contengan la cadena "implements MyInterface" en todas las ubicaciones del directorio actual, excepto .git
:
fsq "path not in '.git' where content contains 'implements MyInterface'"
La lista de atributos especifica qué atributos se imprimen según el estándar mediante fsq
. En el caso anterior, este es solo el nombre del archivo ('nombre'). El siguiente ejemplo imprimirá tanto la ruta al archivo como el tamaño (en bytes):
fsq "path,size in '/opt' where size > 5m"
name
path
size
fsize
(se puede usar en la lista de atributos, pero no se puede consultar)content
(el contenido se puede consultar, pero no se puede agregar a la lista de atributos para imprimir)modified
(formato: 'MM/DD/AAAA' o 'MM/DD/AAAA hh:mm:ss')sha1
sha256
md5
stats
(se pueden usar en la lista de atributos, pero no se pueden consultar)<
<=
>
>=
=
!=
startswith
endswith
isdir
(este operador no acepta ningún argumento)isfile
(este operador no acepta ningún argumento)contains
ignorecase
(debe ir seguido de '=', '!=', 'empieza con', 'termina con' o 'contiene')matches
(coincidencia de expresiones regulares)Los paréntesis, así como los operadores lógicos o , y , y no, se pueden utilizar para agrupar condiciones. Por ejemplo:
fsq "name in '.' where name startswith 'hello' or (isdir and not name startswith 'world')"
Los siguientes calificadores de tamaño se pueden agregar a valores enteros para indicar unidades no predeterminadas. Son especialmente útiles al especificar tamaños de archivos en expresiones. Si no se agrega ningún calificador de tamaño a un número entero, fsq
compara el valor en bytes.
Por ejemplo, para buscar todos los archivos de más de 10 kilobytes y menos de 1 megabyte:
fsq "path where size > 10k and size < 1m"
Se requiere el compilador go
para compilar fsq
. Si tiene make
instalado, fsq
se puede instalar con:
make install
De lo contrario, será necesario ejecutar los siguientes comandos mientras se encuentre en el directorio fsq
:
go get golang.org/x/tools/cmd/goyacc
go install golang.org/x/tools/cmd/goyacc
goyacc parser.y
go install