Должно работать следующее:
for d in ./**/*/; do
pushd "$d"
for f in *.html(N); do
out=test-${f%.html}.txt
inscript.py -o "$out" "$f"
done
popd
done
Шаблон .**/*/
будет рекурсивно соответствовать текущему каталогу и всем его подкаталогам. pushd
изменится на каталог, но помните текущий рабочий каталог. inscript.py
делает свое дело, затем popd
возвращается в исходный рабочий каталог, так что следующее значение d
продолжает оставаться допустимым относительным каталогом.
Изменение рабочего каталога не является строго обязательным; это просто упрощает задействованные пути к файлам, потому что вы сосредотачиваетесь на имени файла и игнорируете остальную часть пути.