Como os nomes dos arquivos são separados por nova linha no arquivo txtfile
, você pode ler cada arquivo, verificar se o número de linhas é igual a (ou maior que 20), se imprimir as 20 primeiras linhas, senão imprimir novas linhas as linhas restantes:
while IFS= read -r f; do
lines=$(wc -l <"$f")
if (( lines < 20 )); then
cat -- "$f"
for ((i=20; i>lines; i--)); do
echo
done
else
head -20 -- "$f"
fi
done <txtfile