在 Linux 中将文件(在本例中为 ISO-8859-1)转换为 UTF-8 非常容易。一直在使用:
查找 . -name "*.txt"-exec iconv -f ISO-8859-1 -t UTF-8 {} -o {}.utf8\;
vim "+set nomore""+bufdo set fileencoding=utf8 | w""+q"$(find . -type f)
问题是修改时间戳自然会更改为转换时间。有没有干净甚至肮脏的方法来保留原始修改时间?
编辑:似乎没有简单的标志或选项。修改元数据完全是更改,针对文件并影响文件修改标记...尽管字符集转换在我看来有点处于灰色地带。无论如何,按照 jjacobi 下面指示的脚本方式进行。
最佳答案
一种简单的方法是:
<小时/>将旧的修改时间戳存储在变量中
last_modif_ts=$(stat [FILENAME] --printf=%Y)
对文件进行所需的修改。
使用touch命令修改上次修改时间戳
touch -m -t $last_modif_ts [FILENAME]
<小时/>
如果您想修改上次访问或创建时间,请参阅 touch 命令的 man。
关于linux - 将文件转换为 UTF-8 并保留修改时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52808199/