find . -type f -name '*.faa' -execdir python3 ../script.py ';'
Isso executaria python3 ../script.py
com o diretório de cada arquivo encontrado como diretório de trabalho.
Como suas palavras e seu código são conflitantes, não sei se devem ser ../script.py
ou ../../script.py
.
Observe também que isso só funcionaria se o arquivo script.py
estivesse realmente disponível no diretório indicado. Pode ser mais seguro fornecer um caminho absoluto para o arquivo de script:
find . -type f -name '*.faa' -execdir python3 /path/to/script.py ';'
O texto acima executaria o script para cada arquivo encontrado, mesmo se houver vários arquivos .faa
em um diretório. Para executar o script apenas uma vez para cada diretório que tenha pelo menos um arquivo .faa
:
find . -type d -exec sh -c '
for dir do
set -- "$dir"/*.faa
if [ "$#" -gt 0 ]; then
( cd "$dir" && python3 /path/to/script.py )
fi
done' sh {} +
Isso executaria um script de shell curto para cada diretório encontrado. O script exibe no diretório para ver se há algum arquivo .faa
lá. Se houver, o script Python é executado com esse diretório como diretório de trabalho.
Relacionados: