gpt4 book ai didi

text - 如何用elisp处理一系列文件?

转载 作者:行者123 更新时间:2023-12-03 21:29:18 24 4
gpt4 key购买 nike

我是编程的新手,所以请在这里耐心等待......

我有一个包含名为“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 完成惊人数量的本书。否则,下载一个 Common Lisp 环境,如 SBCL .

    关于text - 如何用elisp处理一系列文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14670371/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com