![ディレクトリ内のすべてのHTMLファイルでこのPythonスクリプトをどのように実行できますか? [コピー]](https://linux33.com/image/81207/%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E5%86%85%E3%81%AE%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AEHTML%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E3%81%93%E3%81%AEPython%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E5%AE%9F%E8%A1%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
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ファイルで実行し.html
たいと思います。~/script.py
どうすればいいですか?
.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