Você percorre as linhas de zipfiles.txt . Para cada loop, você define uma variável $i com o valor da linha atual. Então, você corta uma parte de cat zipfiles.txt , o que não faz sentido.
Você deseja cortar a partir de $i . Além disso, sua sintaxe está errada, você tem que usar $(any_command) em vez de ${any_command} .
WIDTH3=$(echo "$i" | rev | cut -c47-54 | rev)
De qualquer forma, neste caso, é melhor usar while read [...] em vez de for ... :
while IFS= read -r line; do
WIDTH3=$(echo "$line" | rev | cut -c47-54 | rev)
do_something
done < zipfiles.txt