폴더를 반복하고 Python 스크립트를 실행하는 Bash 명령

폴더를 반복하고 Python 스크립트를 실행하는 Bash 명령

Python 스크립트를 실행하기 위해 linux 명령을 실행하려고 합니다.

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 )

내 Python 스크립트는 -i 디렉토리의 입력 파일을 -oa new .csv로 반환합니다. 각 폴더 P*(P001, P002, P*)에 대한 Correlation_P*를 이 경로(/mnt/data/service/corr_graph/correlation_P*.csv에는 동일한 P001, P002, P*가 있음)로 반환하고 싶지만 중단되었습니다. .

답변1

루프가 반복될 때마다 "P" 뒤의 숫자를 추출하여 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

답변2

@glenn jackman 정말 감사합니다. 제 실력이 향상됐어요. 그래서 나에게 도움이 된 명령은 다음과 같습니다.

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

관련 정보