2016-07-02 3 views

ответ

4

Вы получаете 0 байт, потому что вы перезаписываете свой входной файл.

iconv -f WINDOWS-1250 -t UTF-8 filename.txt > output.txt && 
    mv output.txt filename.txt 
+2

В частности, '> filename.txt' заставляет оболочку открывать (и усекать) файл до его запуска' iconv'. – chepner

1

Как @chepner и @Garret Hyde указывают, оболочка разбирает переназначения ввода/вывода, прежде всего и более пишущая filename.txt перед тем Iconv получает шанс прочитать его. Вы должны сделать эту операцию в два этапа:

iconv -f WINDOWS-1250 -t UTF-8 filename.txt > tmpfile.txt && 
    mv tmpfile.txt filename.txt 

&& гарантирует, что чрезмерно написание исходного файла происходит только если команда Iconv успешно.