命令会告诉我上次修改目录或其子目录的时间吗?

命令会告诉我上次修改目录或其子目录的时间吗?

我们正在尝试弃用旧的 Linux 主文件夹服务器。不过,仍有少数人正在积极使用它。我们的计划是将过去六个月内无人使用的主文件夹更改为只读。我们有 Mac 和 Windows 客户端通过 SMB 访问这些共享。

所以我的问题是:是否有一个命令可以告诉我上次修改目录或其任何子目录的时间?

或者

自某个日期以来已修改的父目录列表?

这将告诉我哪些用户仍在积极使用他们的主文件夹。

答案1

您可能会遇到的一个问题是,修改目录中的文件不一定会更改目录时间戳。以下是示例:

paulgear@localhost:~/tmp$ echo test1 > test1
paulgear@localhost:~/tmp$ ls -la
total 4
drwxr-xr-x 1 paulgear paulgear   18 Jan 15 09:29 .
drwxr-xr-x 1 paulgear paulgear 3976 Jan 15 09:26 ..
drwxr-xr-x 1 paulgear paulgear    0 Jan 15 09:29 test
-rw-r--r-- 1 paulgear paulgear    6 Jan 15 09:29 test1
paulgear@localhost:~/tmp$ date
Wed Jan 15 09:30:07 EST 2014
paulgear@localhost:~/tmp$ echo test2 > test1
paulgear@localhost:~/tmp$ ls -la
total 4
drwxr-xr-x 1 paulgear paulgear   18 Jan 15 09:29 .
drwxr-xr-x 1 paulgear paulgear 3976 Jan 15 09:26 ..
drwxr-xr-x 1 paulgear paulgear    0 Jan 15 09:29 test
-rw-r--r-- 1 paulgear paulgear    6 Jan 15 09:30 test1

请注意,完全替换 test1 的内容并没有更新目录时间戳。因此,您的 find 命令可能应该查找文件和目录,如下所示:

find . -mtime +180 -print0 | xargs -0 chmod a-w

或者您可能希望使文件和目录的时间标准不同:

find . -type d -mtime +120 -print0 | xargs -0 chmod a-w
find . -type f -mtime +180 -print0 | xargs -0 chmod a-w

对于许多(大多数?)使用 SMB 文件共享的应用程序来说,这并不适用,因为它们通常将其内容写入同一目录中的临时文件,然后删除原始文件,然后将临时文件重命名为原始文件的名称。但 Access 等“数据库”应用程序不会这样做。

相关内容