如何移动文件并同时更改其创建时间?

如何移动文件并同时更改其创建时间?

如果我使用该命令在 Linux 中移动文件mv,它会移动文件但不会将其创建时间更改为当前时间。为此,我必须单独使用该touch命令。那么,是否有一个命令可以自动执行这两项操作?

我对此很感兴趣,因为我在 Spark 中以本地模式(使用本地文件系统而不是 HDFS)使用 textFileStreaming,这需要在流目录中对文件进行原子移动。如果时间与移动文件的原始时间保持相同,流媒体程序甚至不会注意到它。它肯定会注意到,如果通过脚本,我首先移动一个文件,然后触摸它来更改其时间。但是,仍然可能发生流式传输程序在使用触摸修改文件时间之前看到该文件,从而忽略它。

答案1

mv,如果您在同一文件系统中工作,则不会更改文件本身,只会更改其位置。要更改该文件,您需要使用另一实用程序,例如touch,或简单地使用cp该文件(这将创建一个具有新修改和访问时间的新文件)和rm旧文件。如果它是一个特别大的文件,那么效率就会很低,这就是为什么像这样的工具touch首先存在的原因。

或者,如果问题在于原子性,您可以将文件移动到临时位置,touch然后将其移动到最终存放位置。

相关内容