ディレクトリ内のすべてのファイルを再帰的に処理する - lisp-cookbook-ja/common-lisp GitHub Wiki
処理系がワイルドカード文字をどう扱うか
OSの種類
OSがワイルドカード文字をどう扱うか
等々の組み合わせ状況により結果が変わってくる可能性がありますが、CLのパス名には、任意の数のディレクトリにマッチさせる"**"という表現がありますので、directoryでディレクトリ内のファイルにマッチさせ、それをマップ関数等で処理することができます。
;; /home/CLer/lisp/以下の *.*~にマッチするすべてのファイル
(length
(directory "/home/CLer/lisp/**/*.*~"))
;=> 1234(サンプル結果)
;; パス名を印字
(map nil
#'print
(directory "/home/CLer/lisp/**/*.*"))
;-> #P"/home/CLer/lisp/Scratch/scm-2007-01-21.scm.~1~"
; #P"/home/CLer/lisp/bolio/bolio.lisp
; #P"/home/CLer/lisp/bolio/bolio.lisp.~2~"
; #P"/home/CLer/lisp/bolio/cadr.lisp
; #P"/home/CLer/lisp/bolio/common.lisp.~1~"
; #P"/home/CLer/lisp/bolio/common.lisp.~2~"
; #P"/home/CLer/lisp/bolio/common.lisp.~3~"
; #P"/home/CLer/lisp/bolio/lmm-settings.lisp.~1~"
; #P"/home/CLer/lisp/cl-2007-01-19.lisp
; #P"/home/CLer/lisp/cl-2007-01-20.lisp.~1~"
;....
;=> NIL
また、処理系/OSの差を吸収することを目的としたコンパチブルレイヤのパッケージとしては、CLiki:CL-FADがありますので、このようなものを利用することで可搬性が高められるかもしれません。
(cl-fad:walk-directory "/home/CLer/lisp/" #'print)
;-> #P"/home/CLer/lisp/Scratch/scm-2007-01-21.scm.~1~"
; #P"/home/CLer/lisp/bolio/bolio.lisp
; #P"/home/CLer/lisp/bolio/bolio.lisp.~2~"
; #P"/home/CLer/lisp/bolio/cadr.lisp
; #P"/home/CLer/lisp/bolio/common.lisp.~1~"
; #P"/home/CLer/lisp/bolio/common.lisp.~2~"
; #P"/home/CLer/lisp/bolio/common.lisp.~3~"
; #P"/home/CLer/lisp/bolio/lmm-settings.lisp.~1~"
; #P"/home/CLer/lisp/cl-2007-01-19.lisp
; #P"/home/CLer/lisp/cl-2007-01-20.lisp.~1~"
;....
;=> NIL