[英]Looping using the name of directories in 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脚本在给定文件夹(即sample1_day1等)的情况下获取“ sampleX's”的名称,并列出sampleX的列表,使用此标识符将cd
(例如cd $i\\_day1
) cd $i\\_day1
文件夹并在其中进行一些分析。该文件夹,随后命名输出和输入。
简而言之,我如何只获取sample1和sample2和sample3并将它们表示为i?
谢谢
for i in */ ; do
"program --input $i.str --input2 $i.yy --out $i\_clean.txt"
done
如果只是sample1,sample2,sample3,那么这也将起作用-
for i in {1..3}
do
"program --input sample"$i".str --input2 sample"$i".yy --out sample"$i"\_clean.txt"
done
@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
在阅读了将近几个小时之后,我意识到缺少的东西:表示其属性的“ /”。
但是当然。 然后我在@Parthiban和@fedterzi的回答中也注意到了这一点(谢谢大家!)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.