使用bash在不同的文件夹中动态执行函数
我有两个文件夹:使用bash在不同的文件夹中动态执行函数,bash,sh,Bash,Sh,我有两个文件夹:control和patients都有几个文件夹,每个文件夹都属于一个个人 我想做两件事: 在文件夹内为每个人创建一个名为cortical_maks的新文件夹,在该文件夹内再创建三个名为acumebens、putamen、caudate 在每个单独的文件夹中,都有img格式的图像,我想使用功能fslchfiletype将其转换为nii.gz 这就是我到目前为止所做的: DIR="/media/Roy"; cd "$DIR/Analysis&qu
control
和patients
都有几个文件夹,每个文件夹都属于一个个人
我想做两件事:
- 在文件夹内为每个人创建一个名为
cortical_maks
的新文件夹,在该文件夹内再创建三个名为acumebens、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
。第一次执行脚本时,将IMG转换为属于第一个人的文件夹,等等
问题01:
第二次运行时,将在主文件夹(即控件和患者)中创建文件夹。如果已经有同名文件夹,我希望它不会创建新文件夹
我建议您在运行代码之前使用if循环来验证文件夹U掩码是否存在:
#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。第一次执行脚本时,将IMG转换为属于第一个人的文件夹,等等
如果您想同时执行两个操作,为什么不创建两个bash脚本并同时执行它们呢?或者,您可以通过在操作系统中创建一个流程来自动执行脚本。问题01:
第二次运行时,将在主文件夹(即控件和患者)中创建文件夹。如果已经有同名文件夹,我希望它不会创建新文件夹
我建议您在运行代码之前使用if循环来验证文件夹U掩码是否存在:
#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。第一次执行脚本时,将IMG转换为属于第一个人的文件夹,等等
如果您想同时执行两个操作,为什么不创建两个bash脚本并同时执行它们呢?或者,您可以通过在操作系统中创建一个进程来自动执行这些脚本。尝试将代码粘贴到中,尝试将代码粘贴到中