【问题标题】:Change working directory while looping over folders在遍历文件夹时更改工作目录
【发布时间】:2015-07-17 21:04:29
【问题描述】:

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

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

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

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

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

此软件的作用是在当前工作目录中创建分析结果。由于扫描具有相同的图像名称,因此它们会一直被覆盖。

我想遍历所有参与者文件夹,使其成为我的工作目录,然后执行 tbss 命令,它就是 tbss_1_preproc scan.nii.gz。这样,文件就会保存在当前工作目录,也就是参与者目录中。

在 Linux 中有什么明智的做法吗?

非常感谢!

【问题讨论】:

    标签: linux loops directory working-directory cwd


    【解决方案1】:

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

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

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

    【讨论】:

    • 这几乎奏效了。分析了第一个文件,但随后出现“没有这样的文件或目录”错误,因为 cd 之后的路径以 . / 这是因为 'find' 命令打印从找到文件的当前工作目录开始的路径。 cd 后面应该是整个路径,而不是以点斜线开头。
    • 固定'查找 . ' 和 'find /home/' 所以我从 find 中得到完整的路径名。谢谢这个作品!
    猜你喜欢
    • 2015-10-28
    • 2021-02-26
    • 2014-10-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 2021-09-04
    相关资源
    最近更新 更多