Aspas simples impedem a expansão: cada caractere em uma cadeia de aspas simples é interpretado literalmente (exceto ' em si que termina a string). Portanto, quando você quiser que * aja como um caractere curinga, deixe-a fora das aspas. (Aspas duplas também evitam que * atue como curinga).
for file in A_*.CSV …
O resto do seu código atualizado provavelmente está ok, mas você deve coloca aspas duplas em torno das substituições de variáveis , caso contrário, mais cedo ou mais tarde, ele vai te morder.
Você pode fazer o redirecionamento fora do loop. Isso é um pouco mais rápido.
for file in A_*.CSV
do
awk -F, 'NR==1 {print $0}' "$file"
done >> Newheader.csv
Este snippet é anexado a Newheader.csv . Se você quiser sobrescrever o arquivo quando ele já existir, como em seu código original, substitua >> por > .
Existem várias maneiras de simplificar seu script, se tudo o que você deseja é imprimir a primeira linha de vários arquivos. Como você está imprimindo a primeira linha, -F, não é usado. Além disso, você pode usar head -n 1 em vez de awk 'NR == 1 {print $0}' . No Linux (mas não em todas as variantes do Unix), para imprimir apenas a primeira linha de vários arquivos, você pode usar head sem nenhum loop:
head -q -n 1 A_*.CSV >Newheader.csv
Você também não precisa de um loop com o awk, veja a resposta do Archemar .