![](/img/trans.png)
[英]how to make list of files in directory and process them one by one? - Python
[英]How to process a series of files with elisp?
我是編程的新手,所以請在這里忍受我...
我有一個名為“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
- 獲取directory-files
所有文件和文件夾,在這種情況下檢索所有.txt文件 find-file
- 在緩沖區中打開一個文件(這是鍵入Cx Cf
時運行的文件) 如果您正在學習Lisp,我可以推薦Practical Common Lisp 。 你將能夠使用Elisp完成這本書的驚人數量。 否則,下載像SBCL這樣的Common Lisp環境。
Emacs的好處在於,由於Emacs的開放性,通常有很多方法可以解決給定的問題。
例如,您可以在Emacs中學習一個簡單的技巧,它將幫助您現在和將來:
這是一個可怕的列表,例如來自Cx f /home/me/mydir/
/home/me/mydir:
total used in directory 32 available 5575136
drwxr-xr-x 10 me brainers 340 Jan 18 15:50 .
drwxr-xr-x 78 me brainers 2652 Feb 2 18:08 ..
-rw-r--r-- 4 me brainers 136 Apr 1 2012 a.txt
-rw-r--r-- 16 me brainers 544 Feb 1 09:56 b.txt
-rw-r--r-- 6 me brainers 204 Apr 6 2012 c.txt
轉到第一個(使用向上和向下鍵),即a.txt
,然后執行
b.txt
) 然后對於每個文件(來自b.txt
),做
b.txt
執行相同b.txt
,然后指向c.txt
。 (如果你在兩個宏執行之間沒有做任何事情,你可以做e
重新執行宏) 注意不要在不想處理的內容上運行宏。
筆記:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.