You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unix循环列出文件失败排查:为何通配符循环无法找到文件?

哈哈,这个坑我之前也踩过!问题出在变量名的边界模糊上——shell会把$i_flank当成一个完整的变量名,而不是你想的$i加上_flank。因为shell变量名可以包含下划线,所以当你写*_$i_flank.fasta时,它会去找名为i_flank的变量(而这个变量你根本没定义,展开后就是空字符串),最后变成*_.fasta,自然找不到文件啦!

解决方法很简单,给变量i加上花括号{},明确告诉shell变量的边界:

for i in $(seq 100 100 200); do ls *_${i}_flank.fasta; done

另外,其实bash本身支持大括号扩展,不用调用seq也能实现同样的效果,写法更简洁:

for i in {100..200..100}; do ls *_${i}_flank.fasta; done

你可以试试这两种写法,应该就能正常列出文件了~

内容的提问来源于stack exchange,提问作者SamL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 19:23:03