覆盖文件会导致0个字节

时间:2016-07-02 21:04:25

标签: bash macos

我想更改txt文件的编码。

{{1}}

我不想更改文件名,但是当我这样做时,我得到一个0字节的文件。

2 个答案:

答案 0 :(得分:4)

您正在获取0个字节,因为您正在覆盖输入文件。

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

答案 1 :(得分:1)

正如@chepner和@Garret Hyde指出的那样,shell先解析I / O重定向,并在iconv有机会阅读之前覆盖filename.txt。您必须分两步执行此操作:

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

&&将确保仅当iconv命令成功时才会覆盖原始文件。