使用 bash 在不同文件夹中动态执行函数
Dynamically execute functions in different folders using bash
我有两个文件夹:control
和patients
,里面都有几个文件夹,每个文件夹属于一个individual
。
我想做两件事:
在文件夹内为每个人创建一个名为 cortical_maks
的新文件夹,并在其中创建另外三个文件夹,名为 accumebens, putamen, caudate
在每个单独的文件夹中,都有 img
格式的图像,我想使用函数 fslchfiletype
.
将其转换为 nii.gz
这是我目前拥有的:
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;
这段代码有两个问题。
第二次运行它,文件夹cortical masks
在主文件夹中创建,即controls
和patients
,即是,在它应该工作的文件夹之外。
此外,它一次只将一个文件夹的 img
转换为 niig.gz
。第一次执行脚本时,为属于第一个人的文件夹转换 imgs,等等
问题 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 中创建一个进程来自动化它们,该进程将为您执行脚本。
我有两个文件夹:control
和patients
,里面都有几个文件夹,每个文件夹属于一个individual
。
我想做两件事:
在文件夹内为每个人创建一个名为
cortical_maks
的新文件夹,并在其中创建另外三个文件夹,名为accumebens, putamen, caudate
在每个单独的文件夹中,都有
将其转换为img
格式的图像,我想使用函数fslchfiletype
.nii.gz
这是我目前拥有的:
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;
这段代码有两个问题。
第二次运行它,文件夹
cortical masks
在主文件夹中创建,即controls
和patients
,即是,在它应该工作的文件夹之外。此外,它一次只将一个文件夹的
img
转换为niig.gz
。第一次执行脚本时,为属于第一个人的文件夹转换 imgs,等等
问题 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 中创建一个进程来自动化它们,该进程将为您执行脚本。