Você pode obtê-los todos em um único fluxo de saída, como:
bzip2 -dc ./File_*.bz2 | filter
Para escrevê-los em arquivos separados, você precisa delimitar o fluxo de alguma forma. Essa seria a solução ideal se você pudesse organizá-la - e com mais informações você poderia obter ajuda para fazê-lo.
Senão você pode chamar seus filtros individualmente uma vez por arquivo de entrada:
for j in ./File_*.bz2
do [ -f "$j" ] &&
bzip2 -dc "$j" |
awk ... >"${j%.*}"
done
Isso não é ideal porque você precisa acessar uma nova instância do seu pipeline por arquivo, mas pode ser uma solução prática para você.
Para obter esse loop de for
em outro arquivo de script e, em seguida, para passá-lo, os argumentos com os quais você deseja trabalhar podem ser:
#!/bin/sh
for j do
case $j in
(*.bz2) [ -f "$j" ] &&
bzip2 -dc -- "$j" |
awk ... >"${j.*}"
esac
done
... que é apenas um pouco mais complicado, para que possa garantir que todos os seus argumentos sejam definitivamente nomeados com uma extensão *.bz2
para evitar qualquer inconveniência que possa cercar a transmissão de um argumento sem extensão. arquivo executável chamado ./script
em um sistema com um POSIX /bin/sh
, ele poderia ser chamado como ...
./script ./File_*.bz2