过滤以特定字符开头和结尾的一组文件

过滤以特定字符开头和结尾的一组文件

嗨,我对这些都很陌生,所以任何帮助我都非常感谢!!我有一个文件列表,我希望我的 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仅用于演示。

相关内容