2012-07-26 85 views
2

我想确定从多个磁盘系统修改文件的所有权,大小和日期/时间。要确定基于上次修改日期修改的文件所有者,大小和日期/时间

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

我知道stat会给出一些后处理的详细信息,但是有没有其他选择可以有效地找到这些文件,并且在每个文件上需要我需要的信息,因为我必须处理跨越大文件/目录很多文件系统?

回答

1

随着GNU找到,您可以使用-ls选项,找到打印类似于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' 
+0

好点。我去xargs路线的唯一原因是他没有找到GNU的机会。无论如何,当他检查他的响应时,他应该很高兴;) – Radix 2012-07-26 20:29:06

+0

@Radix只要我们在做可移植性笔记,我会补充说POSIX find不包括'-ls'和'-print0',尽管他们都是也存在于BSD中,'-ls'存在于Solaris中。 – 2012-07-26 20:33:40

+0

我的大部分时间都花在FreeBSD上,所以你可以理解:) – Radix 2012-07-26 20:36:44

0

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

难道这些选项正确地满足您的需求吗?

+0

单独使用查找的问题是它只会返回文件名,OP需要所有者,大小和上次修改。 – Radix 2012-07-26 19:44:02

+0

嗨科林,谢谢你的回答,但作为基数说,我需要3个领域。 – Grace 2012-07-27 01:05:43

0

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

基于什么,我相信你的要求,你可以结合findls给你你在找什么:

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

上面的命令行语句会找出所有的文件不到三天的时间,因为修改并通过-la开关将输出传递给ls命令,为您提供完整的文件信息,如您所需。您可以摆弄语句的查找部分来识别实际的文件集,但后面的部分将始终为您提供有关文件的详细信息。

+0

HI基数,感谢您的命令,您的答案也是我的一个选择,但我更喜欢直接grep,因为它正在为文件/目录减少吨数。我需要在不到半天的几分钟内执行,至少可以得出结果。谢谢! – Grace 2012-07-27 01:02:24