2012-06-07 42 views
0

我目前正在嘗試編寫一個腳本,它將循環通過多個目錄。主raw_data目錄包含〜150個子目錄(subj001,subj002,...,subj00n),每個子目錄都有幾個子目錄。bash腳本輸出循環通過多個目錄

如何確保從下面給出的腳本輸出將被髮回到輸入來自的特定子目錄(例如subj0012),而不是當前目錄(raw_data)?

#!/bin/bash 

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

謝謝。

+0

是否'tractor'從當前目錄讀取其輸入和輸出寫入同一個目錄?從您的示例中不會看到'dir'的當前值影響拖拉機的工作方式。 – chepner

+0

是的。這是一個問題。到目前爲止,我已經手動指定目錄來處理這個問題。但是,所有使用循環的腳本都失敗了。如果您有任何建議,我將不勝感激。我很抱歉,如果我沒有提出足夠清楚的問題,但我不是Linux的高級用戶。 – user1442363

回答

1

要保存輸出的目錄名稱爲$dir,對不對?所以,僅僅將輸出發送那裏通過重定向:

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

你應該確保你正在處理確實是一個目錄,雖然。

+0

數據的結構和大小使腳本複雜化。我想將每個輸出發送到原始主題目錄(subj001)而不是研究目錄(raw_data)。 – user1442363

0

您可以使用find輸出運行一個循環,在這樣所需的位置輸出附加:

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