2012-08-27 88 views
0

我想要的文字處理一堆與emacs的HTML文件,所以我做的:有沒有一種方法可以對-find-file文件做一個-script動作?

find . -type f -name "*.html" | while read myFile; do 
    emacs emacs --no-site-file --no-init-file --batch \ 
    -script myScript.el --find-file "$myFile" 
done 

的問題是,就「$ MYFILE」 myScript.el行爲 - 並保存修改後的「$ MYFILE」。

也許一個選項將是添加一個命令行:

(add-to-list 'command-line-functions '(lambda() (and (message "ARG:'%s'" argi) t))) 

.emacs - 但是我必須加載.emacs - 我只是不需要加載它。

也許最好是在myScript.el中加入一些明智的行。

編輯

我只是想 - 但多一個選擇會找到myScript.el文件 - 與find-dired

編輯2

我在與find-dired方法問題,因爲我不能讓文件標記:

(progn 
    (find-dired default-directory "-type f -name \"*.html\"") 
    (dired-toggle-marks) 
) 

不起作用。

+0

既然你的(lambda ...)sexp是一個函數,而不是一些隨機列表數據,你不想引用它。 – Stefan

+0

@Stefan:你說得對。我想知道它爲什麼在'(add-to-list'命令行函數'(lambda()(和(message'ARG:'%s'「argi)t)))''''還有'add -hook'和'global-set-key'可以引用lambda。 – Adobe

+0

我沒有說這不起作用。這只是一個壞習慣,而引用的lambda不會像非引用的那樣。 – Stefan

回答

0

我設法在bash循環的幫助下做到這一點。我加

(setq myFile "/home/boris/pst/wordy/edu/PreWW/_build/html/test.html") 

到myScript.el,並運行一個循環:

find ./_build/html -type f -name '*.html' | while read myFile; do 
    MyFile=`readlink -f "$myFile"` 
    perl -ne "s!setq myFile .+!setq myFile \"$MyFile\")!" myScript.el 
    emacs --no-site-file --no-init-file --batch -script myScript.el 
done 

這改變了腳本,然後運行它。

+0

@wvxvw:我同意如果我想使用emacs - 最好在emacs中編寫整個腳本。我想利用emacs的find-dired - 但正如您在問題的編輯2中看到的那樣 - 我沒有走得太遠。 – Adobe

相關問題