我有一个名为“foo01.txt”,“foo02.txt”等文件的目录和一个名为MyFunction的函数.我想打开每个文件作为缓冲区,在其上运行MyFunction,将缓冲区写入其文件,终止缓冲区并继续执行系列中的下一个文件,直到完成所有文件.
我认为我需要做的所有部分都在Cookbook(http://emacswiki.org/emacs/ElispCookbook)中描述,但我并不是真的理解如何将它们放在一起.谢谢!
解决方法 回答如果您正在寻找纯elisp的答案,您可以这样做:
(defun process-file (f) (save-excursion (find-file f) (my-function) ; Call your function here. (write-file f) (kill-buffer (current-buffer))))(defun process-files (dir) (mapc 'process-file (directory-files dir t ".txt$")))
process-files将遍历给定目录中的每个文件,并将process-file应用于所有.txt文件.你可以像这样调用它:
(process-files "~/target-directory")
您可以将其复制到* scratch *缓冲区中并使用各个部分.最有趣的功能是:
> mapc – 将函数应用于列表中的每个项目
> directory-files – 获取目录中的所有文件和文件夹,在这种情况下,检索所有.txt文件
> find-file – 在缓冲区中打开一个文件(这是键入C-x C-f时运行的文件)
学习lisp
如果您正在学习lisp,我可以推荐Practical Common Lisp.您将能够使用Elisp完成这本书的惊人数量.否则,请下载像SBCL这样的Common lisp环境.
总结以上是内存溢出为你收集整理的text – 如何使用elisp处理一系列文件?全部内容,希望文章能够帮你解决text – 如何使用elisp处理一系列文件?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)