使用 bash 在不同文件夹中动态执行函数

Dynamically execute functions in different folders using bash

我有两个文件夹:controlpatients,里面都有几个文件夹,每个文件夹属于一个individual

我想做两件事:

这是我目前拥有的:

DIR="/media/Roy"; cd "$DIR/Analysis"
for group in Controls Patients; do
    for case in $group/*; do
        [ -d $case ] || continue #if its not a folder
        mkdir $DIR/Analysis/$case/Cortical_masks  && cd $_
        mkdir accumbens putamen caudate
            
        for file in $DIR/Analysis/$case/ROIS2/rs_roi/*.img; do
        fslchfiletype NIFTI_GZ "$file"
        done;
    done;
done;  

这段代码有两个问题。

问题 01:

第二次 运行 时,会在主文件夹中创建文件夹 cortical masks,即 controls 和 patients。如果已经有同名文件夹,我希望它不会创建新文件夹。

我建议您使用 if 循环来验证文件夹 cortical_mask 在 运行 您的代码之前是否存在:

#check if the folder exist, if yes = true so we add ! caracter to have the opposite
if [ ! -d "$DIR/Analysis/$case/Cortical_masks" ] 
then
      #Your code
fi

问题 02 :

此外,它一次只将一个文件夹的 img 转换为 niig.gz。第一次执行脚本,转换属于第一个人的文件夹的imgs等

如果您想同时执行两个操作,为什么不创建两个 bash 脚本并同时执行它们?或者,您可以通过在您的 OS 中创建一个进程来自动化它们,该进程将为您执行脚本。