Eu pessoalmente usaria um script Python (ou shell, perl, etc.) para fazer isso. Você poderia usar um comando find e fazer algumas coisas para cada arquivo .py encontrado, mas para mim isso está se aproximando da linha (3 comandos; reindent, pythontidy, mv,) onde eu iria escrever um script ao invés de tentar obter um complexo comando certo. Eu acho que seria isso, mas não tentei:
find . -name '*.py' -exec python reindent.py {} \; \
-exec python PythonTidy-1.20.py {} > temp \; -exec mv temp {} \;
Os documentos do PythonTidy dizem - bem, não consigo encontrar nenhum.
O código do PythonTidy faz com que pareça que essa arrumação no local não é uma opção. Aparentemente, o script permite a saída para stdout (e ler a entrada de stdin). Então, meu primeiro pensamento foi que poderíamos executá-lo assim:
# Don't use this!!!
% python PythonTidy.py testfile.py > testfile.py
Se esta é uma boa ideia ou não, depende da implementação do PythonTidy; se ler todo o arquivo antes de abrir a saída, tudo bem. Mas isso não acontece, é uma má idéia.