dag*_*i12 5 command-line windows bash encoding
我经常在 Ubuntu 和 Windows 之间切换,因此我有一些文本文件的编码问题。
如果我在 Ubuntu 中保存文本文件,则在两个系统中一切正常。但是 Ubuntu 没有发现用 Windows 保存的文件的编码。每次我在 Ubuntu 文本编辑器中打开“windows 文件”时,我都必须更改编码选项。
解决方案是将编码从 Windows-1250 更改为 utf-8。
所以问题是如何用 Windows-1250 打开每个文件并用 utf-8 保存它,对于当前目录子目录中的每个文件(递归我的意思)。我可以在终端中完成还是需要一些外部应用程序。
我期待着你的帮助。
我更喜欢用recode
这个。它不是默认安装的,但可以通过同名的包获得。它还将 CRLF 行结尾更改为 LF。
sudo apt-get install recode
recode cp1250.. file.txt
Run Code Online (Sandbox Code Playgroud)
您可以对整个目录中的所有 txt 文件执行此操作
recode cp1250.. ./*.txt
Run Code Online (Sandbox Code Playgroud)
并递归地结合 find
find . -type f -name "*.txt" -exec recode cp1250.. {} +
Run Code Online (Sandbox Code Playgroud)
标准选项是使用iconv
默认安装的命令,但这不会更改行尾,因此您需要在另一个步骤中执行此操作:
iconv -f cp1250 < file.txt | sed $'s/\r$//' > newfile.txt
Run Code Online (Sandbox Code Playgroud)
从长远来看,我建议将 Windows 编辑器的默认字符集和行尾更改为 UTF-8 和 UNIX 行尾 (LF, \n
),以避免事后进行转换。
CR表示回车( \r
)
LF表示换行( \n
)
Windows 使用两者,但类 Unix 系统仅使用LF。
归档时间: |
|
查看次数: |
5886 次 |
最近记录: |