指定ディレクトリ以下のファイルの文字コードをすべて変換したい
;; ディレクトリ内のファイルのエンコーディングを一括置換 (defun convert-encoding-directory (from to encoding) (setq from (namestring from)) (setq to (namestring to)) (or (and (path-equal from to) (not (yes-or-no-p "入力と出力が同じっぽいっすけどいいっすか?"))) (let (buffer) (unwind-protect (progn (do-events) (setq buffer (create-new-buffer "*foo*")) (set-buffer buffer) (set-buffer-fileio-encoding encoding) (mapc #'(lambda (f) (message "~a..." f) (create-directory (directory-namestring (merge-pathnames f to)) :if-exists :skip) (erase-buffer buffer) (insert-file-contents (merge-pathnames f from)) (write-region (point-min) (point-max) (merge-pathnames f to))) (directory from :file-only t :recursive t))) (and buffer (delete-buffer buffer))))) (message "done"))
xyzzy MLに投稿されたやつの改造版。今、気づいたけど、インデントをタブでしてた・・・。見づらくないといいけど。