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.