更新多个文件访问时间的简单方法

V-R*_*Red 1 filesystems timestamps files

我有一个包含多个子文件夹和文件的文件夹。我在一台服务器上工作,任何超过 60 天的文件都会被自动删除。有哪些简单的命令可以更新文件的访问时间(atime),以便不会发生这种删除(有时我不使用文件超过 60 天,设置所有文件很痛苦)文件夹)?

我想到了一个很粗糙的方法——使用

vim *
vim */* ... and so on
Run Code Online (Sandbox Code Playgroud)

打开所有子文件夹,然后用 :q 关闭它们。然而,这又是一个乏味的过程。关于如何设置脚本或使用 vim 以外的工具的任何想法?

jes*_*e_b 5

touch -- 更改文件访问和修改时间

触摸(1)

注意:虽然您可以这样做,touch *但不会递归到子目录中,*如果不存在文件,则会创建一个名为的文件。更强大的解决方案是使用:

find /path/to/root_dir/ -exec touch -a {} \;
Run Code Online (Sandbox Code Playgroud)

此外,您似乎只想更新目录的修改时间?这可能会更好,因为我确定该服务器上的删除策略是为了节省空间,并且您不想为了节省一些而盲目地保留所有文件。要仅触摸目录,您可以执行以下操作:

find /path/to/root_dir/ -type d -exec touch -a {} \;
Run Code Online (Sandbox Code Playgroud)

注意:touch没有选项会将访问和修改时间都修改为当前时间,其中-a只会更新访问时间。

此外,如果您想要一个命令来显示哪些文件即将被删除,您可以运行类似的命令;

find /path/to/root_dir/ -atime +55
Run Code Online (Sandbox Code Playgroud)

这将列出/path/to/root_dir/访问时间超过 55 天的所有文件。这对于让您知道哪些文件即将达到其最大年龄可能很有用。55如果您想进一步检查,您可以更改为另一个号码。

  • 如果@V-Red 只想更新 _access_ 时间(根据问题标题),应使用`touch -a`。`touch` 应该同时修改 `atime` 和 `mtime`,因此无论清理例程检查哪个,这都可以工作,但 `touch -a` 可能不那么具有侵入性。 (2认同)