2016-10-18 60 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将不胜感激:-) –

相关问题