Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何更改许多文件中的编码?_Linux_Bash - Fatal编程技术网

Linux 如何更改许多文件中的编码?

Linux 如何更改许多文件中的编码?,linux,bash,Linux,Bash,我试试这个: find . -exec iconv -f iso8859-2 -t utf-8 {} \; 但是输出到屏幕,而不是同一个文件。怎么做?阅读 如果需要转换为当前的终端编码,可以这样做: find . -exec enconv -L czech {}\; 或者正是你想要的: find . -exec enconv -L czech -x utf8 {}\; 试试这个: find . -type f -print -exec iconv -f iso8859-2 -t utf-8

我试试这个:

find . -exec iconv -f iso8859-2 -t utf-8 {} \;
但是输出到屏幕,而不是同一个文件。怎么做?

阅读
如果需要转换为当前的终端编码,可以这样做:

find . -exec enconv -L czech {}\;
或者正是你想要的:

find . -exec enconv -L czech -x utf8 {}\;
试试这个:

find . -type f -print -exec iconv -f iso8859-2 -t utf-8 -o {}.converted {} \; -exec mv {}.converted {} \;
它将使用后缀为“.converted”(扩展名)的临时文件,然后将其移动到原始名称,因此如果您有后缀为“.converted”(我认为您没有)的文件,请小心


此外,这个脚本对于包含空格的文件名也不安全,因此为了更安全,您应该用双引号“{}”代替{},用“{}.converted”代替{}.converted

我发现这个方法对我很有效,特别是在我有多个文件编码和多个文件扩展名的情况下

创建名为script.vim的vim脚本:

set bomb
set fileencoding=utf-8
wq
然后,在要针对的文件扩展名上运行脚本:

find . -type f \( -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.css" -o -iname "*.less" -o -iname "*.js" \) -exec vim -S script.vim {} \;

没有人提出一种自动检测编码和重新编码的方法

下面是一个将GIT主分支中的所有HTM/HTML文件重新编码为UTF-8的示例


git ls tree master-r--name only | grep htm | xargs-n1-I{}bash-c'recode“$(file-b--mime encoding{})…utf-8{}”

你也可以看到带有“cat”的文件,我想你的文件问题不是编码!可能您的文件可能包含一些颜色代码,因此您无法看到普通文件。。请尝试使用“cat”命令并再次写入。。是否正常看到?为什么不一直用utf8运行终端?让它成为交换的通用语言。我确实用utf8编码运行我的终端