迭代文件夹并运行 python 脚本的 Bash 命令

迭代文件夹并运行 python 脚本的 Bash 命令

我正在尝试运行 linux 命令来运行 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 )

我的 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

相关内容