Ao lidar com vários arquivos, grep imprime cada nome de arquivo antes das correspondências. Já que você não precisa procurar por uma expressão regular, você pode usar a opção -F para procurar por uma string fixa (o que irá acelerar um pouco as coisas); a opção -r informa grep para agir recursivamente. A opção -r é da versão GNU de grep , então não funcionará em sistemas com outras versões do grep.
grep -r -F 'Taxonomy' /path/to/directory
Isso gerará linhas como:
sequence.php?ID=gi|90022703|ref|YP_528530.1|:Taxonomy: Bacteria; Proteobacteria; Gammaproteobacteria; Alteromonadales; Alteromonadaceae; Saccharophagus
Existem várias maneiras de massagear isso na saída desejada; um seria usar cut :
grep -r -F 'Taxonomy' /path/to/directory | cut -d = -f 2 | cut -d : -f 1,3
Isso deve transformar essa linha em:
gi|90022703|ref|YP_528530.1|: Bacteria; Proteobacteria; Gammaproteobacteria; Alteromonadales; Alteromonadaceae; Saccharophagus
Isso não corresponde exatamente ao que você descreveu; você pode colocar | tr -d : no final do pipe se realmente quiser se livrar do cólon. Finalmente, para redirecionar a saída para um arquivo:
grep -r -F 'Taxonomy' /path/to/directory | cut -d = -f 2 | cut -d : -f 1,3 > file.txt
Se você deseja anexar a um arquivo, em vez de sobrescrevê-lo, use >> em vez de > .