Comando Bash que percorre a pasta e executa o script python

0

Estou tentando executar o comando linux para executar o script python:

for f in /mnt/data/service/fmriprep/geht/sub-P*; do (python 2_correlation.py -i 
"$f" -o /mnt/data/service/corr_graph/correlation_P*.csv )

meu script python assume como arquivo de entrada no diretório -i e retorna como -o um novo .csv. Espero devolver correlation_P * para cada pasta P * (P001, P002, P *) para esse caminho (/mnt/data/service/corr_graph/correlation_P*.csv com o mesmo P001, P002, P *), mas preso.

    
por Relyativist 10.10.2018 / 18:45

2 respostas

2

Para cada iteração do loop, você precisa extrair os dígitos após "P" e usá-los no nome do arquivo csv:

in_dir=/mnt/data/service/fmriprep/geht
out_dir=/mnt/data/service/corr_graph

for dir in "$in_dir"/sub-P*; do 
    num=${dir##*P}
    python 2_correlation.py -i "$dir" -o "$out_dir/correlation_P${num}.csv"
done
    
por 10.10.2018 / 19:21
0

Muito obrigado ao @glenn jackman, você aumentou minha habilidade. Então o comando que funcionou para mim é:

for dir in /mnt/data/service/fmriprep/geht/sub-P*; do if [ -d "$dir" ]; then  
num=${dir##*P} && python 2_correlation.py -i "$dir" -o 
"/mnt/data/service/corr_graph/correlation_P${num}.csv";fi done
    
por 10.10.2018 / 22:32