とりあえず自己解決部分を補足しておくと
最初は、
NOT・アンチなどフィルタ検索部

リスト化

通常の条件検索部
_└→条件1リスト化
___└→(条件2以降のための)ファイル処理
_____└→条件2リスト化→ファイル処理(条件3、4,5など続く)→…
…→ 最終処理ファイルリスト化 → 最終ファイル処理
みたいに分けていました(ただ汎用性はまるでないです)

その後>通常の条件検索部以降の条件1,2…部分と
最終ファイル処理部の条件はかぶるし、NOT・アンチフィルタも条件チェーンに入れることができると考え、
まとめることにしました
で、(処理を指示する情報も含めた)そのリスト化は(質問後に)できました
今は↑のような段階的処理をメソッドチェーンにして
条件とコールバックの依存関係だけをみれるような形なので汎用性があります
res = exSearch('/foobar').fltr(条件1,func1).fltr(条件2,func2)
#条件2は条件1の結果を参照することができるが、
#この部分の補足がコードからは読み取りづらい
res.get_func_list()#[ {"func1":['/foobar/hoge/test.txt', '/foobar/fuga/test.txt']},{},{},,, ]
res.do() # self.fnc1やself.fnc2を使ってそれぞれのファイルを処理する