main.c here is a C program that boots common lisp, builds a command by READing until EOF. The main command is a macroexpansion-time macro like (assoc-filter-dir wild-path &rest filters) eg (assoc-filter-dir #p"recordings/*.*" (day = 31) (hou = 18) (min < 40)) The LHS is any member of: (sec min hou day month yea namestring decoded-time tgid unix-time location? unused index) The cadr is a probably but not necessarily built-in lisp function like = And the caddr is probably a number, or string or something. Sorry about the unsophisticated Makefile. Good luck constructing advanced lisp wildcard paths. (1) .so $ make $ LD_LIBRARY_PATH=. ./main #p"recordings/*.*" (index < 150) ^D (((NAMESTRING . "13000-1680305820_852987500-call_149.m4a") (DECODED-TIME (YEA . 2023) (MONTH . 3) (DAY . 31) (HOU . 18) (MIN . 37) (SEC . 0)) (TGID . 13000) (UNIX-TIME . 1680305820) (LOCATION? . 852987500) (UNUSED . CALL) (INDEX . 149)) ((NAMESTRING . "13000-1680304486_854962500-call_3.m4a") (DECODED-TIME (YEA . 2023) (MONTH . 3) (DAY . 31) (HOU . 18) (MIN . 14) (SEC . 46)) (TGID . 13000) (UNIX-TIME . 1680304486) (LOCATION? . 854962500) (UNUSED . CALL) (INDEX . 3))) (2) standalone $ make standalone $ printf '#p"recordings/*.*"' | ./main .. ..