如何输出单个替代与bash嵌套for循环?

时间:2019-01-14 15:31:33

标签: bash shell for-loop unix

我的目录组织如下:

1.0ps_DCA_md_center.xtc
1.0ps_DCA_npt.gro
1.2ps_DCA_md_center.xtc
1.2ps_DCA_npt.gro
1.8ps_DCA_md_center.xtc
1.8ps_DCA_npt.gro
2.0ps_DCA_md_center.xtc
2.0ps_DCA_npt.gro

我想用bash输出:

1.0ps_DCA_npt.gro
1.0ps_DCA_md_center.xtc
1.2ps_DCA_npt.gro
1.2ps_DCA_md_center.xtc
1.8ps_DCA_npt.gro
1.8ps_DCA_md_center.xtc
2.0ps_DCA_npt.gro
2.0ps_DCA_md_center.xtc

请注意在.gro.xtc文件之间进行切换。

到目前为止,我已经尝试了for循环的几种组合,但是没有任何效果。 如果有人可以帮助我,我将不胜感激。

for i in *.gro; do echo $i; for j in *.xtc; do echo $j; done; done

1.0ps_DCA_npt.gro
1.0ps_DCA_md_center.xtc
1.2ps_DCA_md_center.xtc
1.8ps_DCA_md_center.xtc
2.0ps_DCA_md_center.xtc
1.2ps_DCA_npt.gro
1.0ps_DCA_md_center.xtc
1.2ps_DCA_md_center.xtc
1.8ps_DCA_md_center.xtc
2.0ps_DCA_md_center.xtc
1.8ps_DCA_npt.gro
1.0ps_DCA_md_center.xtc
1.2ps_DCA_md_center.xtc
1.8ps_DCA_md_center.xtc
2.0ps_DCA_md_center.xtc
2.0ps_DCA_npt.gro
1.0ps_DCA_md_center.xtc
1.2ps_DCA_md_center.xtc
1.8ps_DCA_md_center.xtc
2.0ps_DCA_md_center.xtc

1 个答案:

答案 0 :(得分:3)

您可以使用此循环:

for i in *.gro; do
   echo "$i"
   echo "${i%_*}"*.xtc
done

1.0ps_DCA_npt.gro
1.0ps_DCA_md_center.xtc
1.2ps_DCA_npt.gro
1.2ps_DCA_md_center.xtc
1.8ps_DCA_npt.gro
1.8ps_DCA_md_center.xtc
2.0ps_DCA_npt.gro
2.0ps_DCA_md_center.xtc

"${i%_*}"将剥离以_开头的字符串的右侧