捕获部分名称,以便在linux中循环

捕获部分名称,以便在linux中循环,linux,bash,Linux,Bash,如何在文件名中捕获模式并在linux中使用它 文件夹中的示例包含以下文件: BBB137O19_rc.fa BBB921N08_.fa BBB002O19_cc.fa 我想捕获文件名的前面部分,并使用它来做一些事情,如重命名、运行程序等。显然,basename是贪婪的,在扩展之前适用于所有内容 提前谢谢 我尝试了此命令,但失败了 用于*.fa中的i;基本=$(基本名称$i*.fa);comb=“${base}_ec.txt”;mv ec.txt$comb;完成您可以使用BASH字符串操作: s=

如何在文件名中捕获模式并在linux中使用它

文件夹中的示例包含以下文件:
BBB137O19_rc.fa
BBB921N08_.fa
BBB002O19_cc.fa

我想捕获文件名的前面部分,并使用它来做一些事情,如重命名、运行程序等。显然,basename是贪婪的,在扩展之前适用于所有内容

提前谢谢

我尝试了此命令,但失败了

用于*.fa中的i;基本=$(基本名称$i*.fa);comb=“${base}_ec.txt”;mv ec.txt$comb;完成

您可以使用BASH字符串操作:

s='BBB921N08_cleaned.fa'

echo "${s%%_*}"
BBB921N08
此外,sed还可用于:
echo“$i”| sed's/.*/'

这将删除
\uuu
及其后出现任意次数的任何字符(
)(
*
)。 如果要处理更复杂的模式,Sed及其正则表达式尤其有用。

对于给定的示例,“前端”具体是什么?