LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1419|回复: 7

怎样把文件夹里的utf8编码都改为gbk的?请问有这样的脚本吗?

[复制链接]
发表于 2005-12-10 16:44:38 | 显示全部楼层 |阅读模式
写一些LaTeX时遇到这样的情况,得把文件改为gbk的。
发表于 2005-12-10 16:59:10 | 显示全部楼层
iconv.
回复 支持 反对

使用道具 举报

发表于 2005-12-11 03:20:53 | 显示全部楼层
文件内容:iconv
文件名字:convmv

搜索google就可以得到第二个。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-11 11:26:33 | 显示全部楼层
谢谢,发现我的电脑上并没有convmv这命令,因为
[viking@localhost temp]$ type iconv
iconv is hashed (/usr/bin/iconv)
[viking@localhost temp]$ type convmv
bash: type: convmv: not found

[root@localhost temp]# find / -name "convmv"
find: /proc/2081/task: 没有那个文件或目录
find: /proc/2081/fd: 没有那个文件或目录


不过iconv可以用了,但现在有一个问题就是,用
iconv ss.tex -f utf-8 -t gbk -o sx.tex

这样的命令可以成功的把ss。tex 转为gbk编码的sx.tex,然后用latex可以成功编译。
可是用
iconv ss.tex -f utf-8 -t gbk -o ss.tex

就会发现ss.tex里的内容都没有啦。而我的本意就是把文件的编码改变而文件名不改变。
回复 支持 反对

使用道具 举报

发表于 2005-12-11 16:55:12 | 显示全部楼层
" iconv ss.tex -f utf-8 -t gbk -o ss.tex
就会发现ss.tex里的内容都没有啦。而我的本意就是把文件的编码改变而文件名不改变。"


你应该先用临时文件保存,然后再改回去。。
如:

  1.    iconv ss.tex -f utf-8 -t gbk -o temp.txt
  2.    mv temp.txt  ss.tex
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-11 21:38:54 | 显示全部楼层
谢谢5楼的,现在可以啦。
不过我写了一个脚本来尝试把每个文件都改变,脚本如下:
#!/bin/sh
for FILE in 'find | grep .tex';
do
iconv "$FILE" -f utf-8 -t gbk -o temp.txt
mv temp.txt  "$FILE";
done


可是运行之后还是utf-8编码,
初学shell编程,不知这是什么原因呢?
回复 支持 反对

使用道具 举报

发表于 2005-12-12 07:55:36 | 显示全部楼层
Post by terrylai
谢谢5楼的,现在可以啦。
不过我写了一个脚本来尝试把每个文件都改变,脚本如下:


可是运行之后还是utf-8编码,
初学shell编程,不知这是什么原因呢?



这样可以啊,是不是你把那个反引号写成单引号了??

  1. for FILE in 'find | grep .tex'
复制代码

应该是

  1. for FILE in `find | grep .tex`
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-12 13:05:30 | 显示全部楼层
谢谢,果然是我的‘和`搞错啦。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表