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

标签 linux utf-8 character-encoding timestamp

在 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/

相关文章:

python - 使用 MD5( ) 在 Python 中编码和解码

php - PHP 在 Outlook 中生成的 vCard 的字符编码问题

linux - 带线索引的 Zcat

javascript - 无法使用 MulterJS 在 Linux 服务器上上传文件

Linux 上的 PHP 5.4 : How to connect with MS SQL Server 2008?

csv - 文件使用多重编码

葡萄牙语的 MySQL 排序规则

php - 在 MYSQL 中搜索具有西类牙口音的圣经网站字符集

linux - 通过 crontab 终止后运行 python 程序

windows - 代码如何存储在可执行文件中?