嗨,我对这些都很陌生,所以任何帮助我都非常感谢!!我有一个文件列表,我希望我的 bash 脚本能够处理这些文件,例如
BG2_45TS02.组装.快速
BG2_45TS02.riboassemble.fastq
BG3_45TS02.assembled.fastq
BG3_45TS02.核糖组装.fastq
BG4_45TS02.assembled.fastq
BG4_45TS02.riboassembled.fastq
如果我只想挑选出以 BG2 开头和以 .riboassembled.fastq 结尾的
这个能用吗 BG2*.riboassembledfastq 例如我的脚本是
for file in $STEP_2/BG2*.riboassembled.fastq
答案1
是的,可以。
您可以简单地在循环中尝试使用echo
或:printf
$ for file in "$STEP_2"/BG2*.riboassembled.fastq; do printf '%s\n' "$file"; done
/BG2*.riboassembled.fastq
搜索以globbing
获取有关其工作原理的更多信息和教程,例如https://www.tldp.org/LDP/abs/html/globbingref.html
注意,包含文件名的变量(此处$STEP_2
)应该放在双引号中,否则如果变量中包含空格就会导致问题。
答案2
正如 pLumo 建议的那样,您可以使用$file
变量来指向当前文件
跑步:
$ for file in ./BG2*; do cat $file; done
结果:
./BG2_45TS02.assembled.fast
date
Wed 04 Mar 2020 02:39:39 PM EET
./BG2_45TS02.riboassembled.fastq
date
Wed 04 Mar 2020 02:39:39 PM EET
跑步:
$ for file in ./BG2*ribo*q; do cat $file; done
结果:
./BG2_45TS02.riboassembled.fastq
date
Wed 04 Mar 2020 02:39:39 PM EET
do cat $file
您可以使用其他东西来代替。cat $file
仅用于演示。