循环遍历多个目录的bash脚本的输出

时间:2012-06-07 16:06:08

标签: linux bash shell scripting

我目前正在尝试编写一个循环遍历多个目录的脚本。主raw_data目录包含~150个子目录(subj001,subj002,...,subj00n),每个子目录都有几个子目录。

如何确保下面给出的脚本的输出将被发送回输入的特定子目录(例如subj0012),而不是当前目录(raw_data)?

#!/bin/bash

for dir in ~raw_data/*
do
  tractor -d -r -b preproc RunStages:1 
done 

谢谢。

2 个答案:

答案 0 :(得分:1)

要保存输出的目录名称位于$dir,对吗?所以,只需通过重定向发送输出:

#!/bin/bash
for dir in ~raw_data/* ; do
    tractor -d -r- b preproc RunStages:1 > $dir/output
done

但是,您应该确保您正在处理的内容确实是一个目录。

答案 1 :(得分:0)

您可以使用find的输出来运行循环并将输出附加到所需的位置,如下所示:

while read d
do
    echo $d >> ~raw_data/subj0012/output
done < <(find ~raw_data -type d)