如何确保我的所有源文件保留UTF-8与Unix行结束?

我正在寻找一些用于Linux的命令行工具,可以帮助我检测和转换文件,如iso-8859-1和windows-1252到utf-8,从Windows行结束到Unix行结束.

我需要这样做的原因是,我正在通过SFTP与Linux上的编辑器(如Sublime Text)一起在Linux服务器上进行项目,这些编辑器不断地将这些事情拧上来.现在我猜测,一半的文件是utf-8,其余的是iso-8859-1和windows-1252,因为它似乎Sublime Text只是选择字符集,当我保存文件包含的符号.即使我在选项中指定了默认行结尾都是LF,所以行结尾都是Windows行尾,所以大约一半的文件有LF,一半是CRLF.

所以我至少需要一个工具,递归地扫描我的项目文件夹,并提醒我离开utf-8的文件与LF行结尾,所以我可以手动修复之前,我提交我的更改GIT.

任何关于这个话题的意见和个人经验也将受到欢迎.

谢谢

编辑:我有一个临时解决方案,我使用树和文件来输出我的项目中的每个文件的信息,但它是有点愚蠢.如果我不包含文件的-i选项,那么很多我的文件得到不同的输出,如ASCII C程序文本和HTML文档文本和英文文本等:

$tree -f -i -a -I node_modules --noreport -n | xargs file | grep -v directory
./config.json:              ASCII C++ program text
./debugserver.sh:           ASCII text
./.gitignore:               ASCII text, with no line terminators
./lib/config.js:            ASCII text
./lib/database.js:          ASCII text
./lib/get_input.js:         ASCII text
./lib/models/stream.js:     ASCII English text
./lib/serverconfig.js:      ASCII text
./lib/server.js:            ASCII text
./package.json:             ASCII text
./public/index.html:        HTML document text
./src/config.coffee:        ASCII English text
./src/database.coffee:      ASCII English text
./src/get_input.coffee:     ASCII English text, with CRLF line terminators
./src/jtv.coffee:           ASCII English text
./src/models/stream.coffee: ASCII English text
./src/server.coffee:        ASCII text
./src/serverconfig.coffee:  ASCII text
./testserver.sh:            ASCII text
./vendor/minify.json.js:    ASCII C++ program text, with CRLF line terminators

但是如果我包含-i它不显示我的行终止符:

$tree -f -i -a -I node_modules --noreport -n | xargs file -i | grep -v directory
./config.json:              text/x-c++; charset=us-ascii
./debugserver.sh:           text/plain; charset=us-ascii
./.gitignore:               text/plain; charset=us-ascii
./lib/config.js:            text/plain; charset=us-ascii
./lib/database.js:          text/plain; charset=us-ascii
./lib/get_input.js:         text/plain; charset=us-ascii
./lib/models/stream.js:     text/plain; charset=us-ascii
./lib/serverconfig.js:      text/plain; charset=us-ascii
./lib/server.js:            text/plain; charset=us-ascii
./package.json:             text/plain; charset=us-ascii
./public/index.html:        text/html; charset=us-ascii
./src/config.coffee:        text/plain; charset=us-ascii
./src/database.coffee:      text/plain; charset=us-ascii
./src/get_input.coffee:     text/plain; charset=us-ascii
./src/jtv.coffee:           text/plain; charset=us-ascii
./src/models/stream.coffee: text/plain; charset=us-ascii
./src/server.coffee:        text/plain; charset=us-ascii
./src/serverconfig.coffee:  text/plain; charset=us-ascii
./testserver.sh:            text/plain; charset=us-ascii
./vendor/minify.json.js:    text/x-c++; charset=us-ascii

还为什么它显示charset = us-ascii而不是utf-8?什么是text / x-c?有没有一种方式,我可以输出每个文件的charset = utf-8和line-terminators = LF?

我结束的解决方案是两个Sublime Text 2插件“EncodingHelper”和“LineEndings”.我现在在状态栏中同时获取文件编码和行结尾:

如果编码错误,我可以使用File-> Save with Encoding来保存.如果行尾错误,后一个插件附带了更改行结尾的命令:

翻译自:https://stackoverflow.com/questions/8961255/how-to-make-sure-all-my-source-files-stay-utf-8-with-unix-line-endings

转载注明原文:如何确保我的所有源文件保留UTF-8与Unix行结束?