Вместо вызова awk один раз для каждого входного файла:
for f in *; do
awk '{print}' "$f" > "${f}.${sfx}"
done
Попробуйте вызвать awk только один раз всего:
awk -v sfx="$sfx" 'FNR==1{close(out); out=FILENAME"."sfx} {print > out}' *
кстати:
tmp="echo -n "$1" | sha256sum | cut -f1 -d\" \""
tmp | getline cksum
$1=cksum;
print $0;
close(tmp)
записать это для надежности:
cmd = "printf \047" $1 "\047 | sha256sum"
if ( (cmd | getline cksum) > 0 ) {
split(cksum,arr)
$1 = arr[1]
}
else {
print "Failed to get checksum" | "cat>&2"
}
close(cmd)
print