2016-10-18 57 views
0

例如文件循環:使用目錄的名稱在bash

sample1_day1/

sample1.str 

sample1.yy 

sample1_ABC.log 

sample2_day1/

sample2.str 

sample2.yy 

sample2_ABE.log 

sample3_day1/

sample3.str 

sample3.yy 

sample3_ASC.log 

我已經使用這個來通過文件循環:

for i in `echo *$FILTER | sed 's/'$FILTER'//'`;do 
    "something here"; 
done 

這得到了「標識」,「sampleX」在這種情況下 但是當我把它用於遍歷文件夾,它失敗了。

我需要的$i指定爲「姓名標籤」由一個程序一樣需要的輸出和輸入文件容易的命名:

for i in something; do 
    "program --input $i.str --input2 $i.yy --out $i\_clean.txt" 
done 

我希望我的bash腳本來獲取「sampleX的」名稱給定文件夾(iesample1_day1等)並製作sampleX列表,使用該標識符cd(例如,cd $i\_day1)到該文件夾​​,然後在該文件夾中進行一些分析,然後相應地命名輸出和輸入。

總之,我該如何得到sample1,sample2和sample3,並將它們表示爲我?

感謝

回答

1

@ fedterzi的答案的小修改後的版本。這隻幫助您導航樣本_day1樣本 _day *即使您有名稱不同的目錄。

#!/bin/bash 
for i in sample*_day1/ ; do 
    cd $i 
    "program --input $i.str --input2 $i.yy --out $i\_clean.txt" 
done 
1
for i in */ ; do 
    "program --input $i.str --input2 $i.yy --out $i\_clean.txt" 
done 
1

如果只是SAMPLE1,SAMPLE2,樣本3那麼這也將與工作

for i in {1..3} 
do 
"program --input sample"$i".str --input2 sample"$i".yy --out sample"$i"\_clean.txt" 
done 
-1

讀了幾個小時後,我意識到丟失了什麼:表示它的屬性的「/」。

當然。然後我在@Parthiban和@fedterzi的答案中也注意到了這一點(謝謝你們!)。

+1

Upvote將不勝感激:-) –

相關問題