Você poderia usar algo assim, se estiver usando bash como seu shell:
while read name
do dir="${name%/*}" file="${name##*/}"
iconv -f windows-1256 -t utf8 "$dir/$file" -o "$dir/new_$file"
done < list.txt
A linha que atribui dir e file usa construções documentadas na parte Parameter expansion da seção EXPANSION da página bash man. As marcas de aspas em torno das construções destinam-se a manipular espaços em branco em nomes de arquivos.
Se você quiser testar algo assim antes de usá-lo, você pode prefixar echo no comando de interesse ( iconv neste exemplo) para ter certeza de que o comando é o que você pretende que seja.