Como posso executar este script python em todos os arquivos html em um diretório? [duplicado]

1

Eu tenho um script 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)

Eu posso executar o script em um arquivo individual emitindo algo como

$ python script.py foo.html > new-foo.html

Meu problema é que tenho um diretório ~/webpage que contém centenas de arquivos .html espalhados por subdiretórios. Eu gostaria de executar ~/script.py em todos esses arquivos html. Como posso fazer isso?

Estou ciente de que posso listar todos os arquivos .html em ~/webpage/ emitindo

$ find ~/webpage/ -name "*.html"

mas não tenho certeza de como usar essa lista para executar meu script neles.

    
por Brian Fitzpatrick 12.01.2016 / 02:47

2 respostas

1

Use o comando -exec de find

find ~/webpage/ -name "*.html" -exec sh -c 'python script.py {} > new-{}' \;

Para algumas versões, talvez seja necessário fazer

find ~/webpage/ -name "*.html" -exec sh -c 'python script.py $0 > new-$0' {} \;
    
por 12.01.2016 / 02:54
1

Você pode tentar um loop for para percorrer os arquivos no diretório:

for f in *.html; do python script.py f > new-"$f".html; done

    
por 12.01.2016 / 02:53