;;; -*- Mode:LISP; Package:USER; Base:10; Readtable:CL -*- (DEFUN COMBINE-FILES (WILDCARD OUTPUT) (LET ((L (SORT (DELQ NIL (MAPCAR #'CAR (FS:DIRECTORY-LIST WILDCARD))) #'FILENAME-LESSP))) (FORMAT T "~&;COMBINING ~D FILES INTO ~A~%" (LENGTH L) OUTPUT) (WITH-OPEN-FILE (O OUTPUT :OUT) (DO ((J 1 (1+ J)) (F L (CDR F))) ((NULL F)) (WITH-OPEN-FILE (I (CAR F)) (FORMAT T "~&; ~D ~S -> ~S~%" J (SEND (SEND I :TRUENAME) :STRING-FOR-EDITOR) (SEND (SEND O :TRUENAME) :STRING-FOR-EDITOR)) (STREAM-COPY-UNTIL-EOF I O)))))) (DEFUN FILENAME-LESSP (P1 P2) ;; I CREATED FILENAMES LIKE OUTPUT1, OUTPUT2, ... OUTPUT9, OUTPUT10, ... ;; FOR WHICH ALPHALESSP FAILS. FOO. (LET ((N1 (SEND P1 :NAME)) (N2 (SEND P2 :NAME))) (LESSP (PARSE-NUMBER N1 (LENGTH "OUTPUT")) (PARSE-NUMBER N2 (LENGTH "OUTPUT")))))