Shell:检查子目录是否存在然后运行命令

Shell:检查子目录是否存在然后运行命令

我有一个这样的目录结构:

incoming--
         |--sub-P001--|
                      |--func
                      |--anat
         |--sub-P002--|
                      |--anat
         | ....

对于每个子目录,我需要检查它是否包含名为 的子目录func,如果包含,则运行命令fmriprep-docker,否则运行另一个命令。

我尝试了这段代码,但它被卡住了:

    if [ -d $mnt/data/service/incomning/$sub-P*/func ] ; then
        fmriprep-docker run -it ... /mnt/data/service/incoming

    else: 
        fmriprep-docker run -it --anat-only /mnt/data/service/incoming
        fy
    fy

答案1

if您无法在这样的单个语句中同时检查一堆路径名。相反,您必须迭代父文件夹并测试每个文件夹是否包含目录func

for directory in "$mnt"/data/service/incomning/sub-P*/; do
    if [ -d "$directory"/func ]; then
        (cd "$directory" && fmriprep-docker run -it ...)
    else
        (cd "$directory" && fmriprep-docker run -it --anat-only)
    fi
done

或类似的东西(我不知道这个fmriprep-docker工具的作用或使用方式)。

相关内容