0

我想用emacs对一堆html文件进行文本处理,所以我这样做:

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

问题是myScript.el对“$myFile”采取行动——并保存修改后的“$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)
  )

不起作用。

4

1 回答 1

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

它更改脚本然后运行它。

于 2012-08-27T12:21:21.853 回答