O problema é que cada vez que cat
é executado, o arquivo de saída é truncado (esvaziado). Isso porque você usa >
para redirecionamento.
Alternativa:
for d in a b c g z
do
(cd "$d"; rm -f combined.txt; for i in File_*_best3.txt *_new3.txt; do cat "$i" >>combined.txt; done)
done
ou
for d in a b c g z
do
(cd "$d" && cat File_*_best3.txt *_new3.txt >combined.txt)
done
Suponho que File_*_best3.txt
e *_new3.txt
correspondam apenas a um nome de arquivo.