使用bash中的目录名称循环

时间:2016-10-18 09:33:29

标签: bash sed

示例文件:

sample1_day1 /

sample2.str

sample2.yy

sample2_ABE.log

sample2_day1 /

sample3.str

sample3.yy

sample3_ASC.log

sample3_day1 /

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

我用它来循环遍历文件:

$i

在这种情况下,这将获得“标识符”,“sampleX” 但当我用它来遍历文件夹时,它就失败了。

我需要将for i in something; do "program --input $i.str --input2 $i.yy --out $i\_clean.txt" done 指定为“名称标签”,以便轻松命名程序所需的输出和输入文件,如:

cd

我希望我的bash脚本在给定文件夹(iesample1_day1等)的情况下获取“sampleX”的名称并制作sampleX的列表,将此标识符用于cd $i\_day1(例如submit)到文件夹并在该文件夹中进行一些分析,然后相应地命名输出和输入。

简而言之,我如何获得sample1和sample2以及sample3并将它们表示为i?

由于

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

如果它只是sample1,sample2,sample3那么这也可以 -

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

答案 2 :(得分: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

答案 3 :(得分:-1)

阅读和阅读了几个小时后,我意识到缺少的东西:表示其属性的“/”。

但当然。然后我也在@Parthiban和@fedterzi的答案中注意到这一点(谢谢你们!)。