Unix 根据上次修改日期确定文件所有者、大小和修改日期/时间

Unix 根据上次修改日期确定文件所有者、大小和修改日期/时间,unix,Unix,我想确定来自多个磁盘系统的文件的所有权、大小和修改日期/时间 有没有一种方法可以递归地搜索这些文件和目录,因为我知道的唯一解决方案是使用find的-mtime选项,它只返回基于指定日期范围的文件名/路径列表。我还需要修改所有权、尺寸和日期/时间 我知道stat会通过一些后期处理提供详细信息,但是有没有其他方法可以有效地找到这些文件,以及我需要的每个文件的信息,因为我必须处理许多文件系统中的大量文件/目录 find的GNU版本有-user(用于所有者),-size(用于文件大小),-mtime(用

我想确定来自多个磁盘系统的文件的所有权、大小和修改日期/时间

有没有一种方法可以递归地搜索这些文件和目录,因为我知道的唯一解决方案是使用find的-mtime选项,它只返回基于指定日期范围的文件名/路径列表。我还需要修改所有权、尺寸和日期/时间


我知道stat会通过一些后期处理提供详细信息,但是有没有其他方法可以有效地找到这些文件,以及我需要的每个文件的信息,因为我必须处理许多文件系统中的大量文件/目录

find的GNU版本有-user(用于所有者),-size(用于文件大小),-mtime(用于修改时间)


这些选项不正是您所需要的吗?

为了可读性和清晰性,我编辑了您的OP

根据我相信您的要求,您可以将
find
ls
结合起来,为您提供所需:

find . -type f -mtime -3d -print0 | xargs -0 ls -la

上面的命令行语句将标识修改后不到三天的所有文件,并使用-la开关将输出传递到ls命令,以提供您所需的完整文件信息。您可以随意摆弄语句的find部分来识别实际的文件集,但后面的部分将始终提供文件的详细信息。

使用GNU find,您可以使用
-ls
选项让find以类似于
ls-isl
的格式打印结果,或者使用
-printf
选项精确选择所需的字段。示例:

find . -type f -mtime -3 -ls

find . -type f -mtime -3 -printf 'owner=%u (uid %U) size=%s bytes modified=%t name=%p\n'

只使用find的问题是,它只会返回文件名,OP需要所有者、大小和上次修改。嗨,科林,谢谢你的回答,但正如Radix所说,我需要3个字段。这一点很好。我走xargs路线的唯一原因是他没有找到GNU。无论如何,当他检查自己的回复时,他应该感到高兴;)@只要我们在做可移植性说明,我就要补充一点,POSIX find既不包括
-ls
也不包括
-print0
,尽管它们都存在于BSD中,而且
-ls
存在于Solaris中。我的大部分时间都花在FreeBSD上,所以你可以理解:)嗨,艾伦,非常感谢你的回答,因为你的回答确实给我带来了奇迹!我看到您的命令中有%s、%t、%U等,试图更改它,但它给了我其他东西,因此它背后一定有一些原因,我可以知道这是否与统计有关吗?例如,如果%U表示Uid,那么代表统计中其他字段的alphebet是什么?我的兴趣是了解未来使用的知识。第二,我想知道有没有办法把尺寸改成可读的格式。我知道-H选项可以这样做,但是我如何在命令中应用它呢?谢谢你的帮助。@Grace在find-printf中有大量的%-逃逸。我不全认识。我在find手册页中查找了其中一些,以构建一个工作示例。你可以在那里找到其余的人。不过,我不认为ls-lh风格的大小输出是其中之一。嗨,Radix,谢谢你的命令,你的答案对我来说也是一个选项,但是我更喜欢直接grep,因为它处理大量文件/目录。我至少需要在不到半天的几分钟内执行,才能得出结果。非常感谢。