我有一个 python 脚本
$ cat ~/script.py
import sys
from lxml import etree
from lxml.html import parse
doc = parse(sys.argv[1])
title = doc.find('//title')
title.text = span2.text.strip()
print etree.tostring(doc)
我可以通过发出类似的命令在单个文件上运行脚本
$ python script.py foo.html > new-foo.html
我的问题是我有一个目录,其中包含分散在子目录中的~/webpage
数百个文件。.html
我想~/script.py
在所有这些 html 文件上运行。我怎样才能做到这一点?
我知道我可以通过发出.html
以下命令列出所有文件~/webpage/
$ find ~/webpage/ -name "*.html"
但我不太确定如何使用此列表在它们上运行我的脚本。
答案1
使用-exec
命令find
find ~/webpage/ -name "*.html" -exec sh -c 'python script.py {} > new-{}' \;
对于某些版本,您可能需要执行以下操作
find ~/webpage/ -name "*.html" -exec sh -c 'python script.py $0 > new-$0' {} \;
答案2
您可以尝试使用 for 循环来迭代目录中的文件:
for f in *.html; do python script.py f > new-"$f".html; done