将文件转换为UTF-8并保留修改时间戳

时间:2018-10-15 00:11:46

标签: linux utf-8 character-encoding timestamp

在Linux中将文件(在本例中为ISO-8859-1)转换为UTF-8非常容易。一直在使用:

  • find . -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的脚本方式进行操作。

1 个答案:

答案 0 :(得分:0)

一种简单的方法是:


将旧的修改时间戳记存储在变量中

last_modif_ts=$(stat [FILENAME] --printf=%Y)

在文件上进行所需的修改。

使用touch命令修改上次修改时间戳记

touch -m -t $last_modif_ts [FILENAME]

如果要修改上次访问或创建时间,请参见touch命令的内容。