2017-02-08 17 views
0

我有一個循環,我想在不同的目錄/文件夾中運行。 目錄名稱是:A,B,C,d,E,...在不同目錄中運行特定循環

我的循環是:

cd */ 
for i in Test_*_hit.txt; do cut -f1,2 $i > ${i%.txt}2.txt; done 

但不工作(沒有這樣的文件或目錄),我該怎麼辦?

回答

3
for i in a b c d e 
do 
    (cd $i/; for i in Test_*_hit.txt; do cut -f1,2 $i > ${i%.txt}2.txt; done) 
done 
+0

打我吧... – tfb

+0

感謝您的建議,它工作得很好 – Paul

2

還有一堆的方法可以做到這一點,但一個(Bourne shell)中的做法是

for d in <directories> 
do 
    (cd "$d" && <commands>) 
done 

它使用一個子shell(在括號中的東西)來更改目錄&做你想做的這樣做可以避免你必須記住你所在的目錄。

+0

感謝您的建議 – Paul

+0

這個答案如何不同來自接受者d答案? –

+0

@GeorgeVasiliou它更安全(如果cd失敗,它不運行循環),但主要是當我開始寫它時,另一個尚不存在。 – tfb