for file in *.txt; do
grep 'Trial End' "$file" >> "${file%.txt}_ended.txt"
done
Estou usando >>
em vez de >
apenas no caso de existir um dos arquivos *_ended.txt
- >>
será anexado ao arquivo em vez de truncá-lo e substituí-lo.
Outra coisa sobre isso é que não é muito reutilizável. Se você já executou uma vez, você terá filename_ended.txt
arquivos que correspondem ao padrão e serão processados, e você terá filename_ended_ended.txt
arquivos.
É melhor você usar outra extensão para esses arquivos para evitar esse possível aborrecimento no futuro (e, a propósito, extensões não importam muito no mundo Unix).
for file in *.txt; do grep 'Trial End' "$file" >> "$file.ended"; done