如何在目录下的所有 html 文件上运行这个 python 脚本?

如何在目录下的所有 html 文件上运行这个 python 脚本?

我有一个 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

相关内容