在遍历文件夹时更改工作目录

Change working directory while looping over folders

目前我正尝试在 Linux 命令行上 运行 成像文件 (scan.nii.gz) 上的 MRI 软件 (TBSS)。

扫描件都存储在不同参与者的单独文件夹中,文件名相同,所以:

/home/scans/participant1/scan.nii.gz

/home/scans/participant2/scan.nii.gz

/home/scans/participant3/scan.nii.gz

这个软件的作用是在当前工作中创建分析结果directory.Since扫描具有相同的图像名称,它们总是被覆盖。

我想遍历所有参与者的文件夹,将其作为我的工作目录,然后执行 tbss 命令,这很简单 tbss_1_preproc scan.nii.gz。这样文件就会存放在当前工作目录下,也就是参会者目录下。

在 Linux 中有什么明智的方法可以做到这一点吗?

非常感谢!

在 BASH 试试吧。下面的代码未经测试,但它应该会给你一个线索

#! /bin/bash

find . -name scan.nii.gz | while read line
do
   cd $(dirname "${line}")
   tbss_1_preproc $(basename "${line}")
done

将其放入文件中并使其可执行。将其复制到您的扫描文件夹并执行它。