find 命令与 -exec ls 产生不同的输出

find 命令与 -exec ls 产生不同的输出

我试图根据修改日期确定哪些文件将被修改。我的目录是可能有几层子目录的列表的顶部。

我从终端窗口运行以下命令:

find Program.8.koeb/ -mtime -10

它会正确生成过去 10 天内修改的文件列表。但是,如果我想查询此列表以确保我想要使用该find命令触摸的文件,我将运行以下命令:

find Program.8.koebe/ -mtime -10 -exec ls -gotrhR {} \;

它会生成当前工作目录的目录中所有文件的长列表(包括子目录)以及find分配给 Look 的指定目录。因此,-exec ls -gotrhR {} \;似乎产生与以下相同的输出:

find . -mtime -10 -exec ls -gotrhR {} \;

这不是我的本意。

答案1

只需添加“-type f”,因​​为 -exec ls -l {} 将包含这些目录并列出它们。

答案2

当您将目录传递给 时ls,它会列出该目录中的文件,而不是目录本身。使用该-R标志,ls递归地列出子目录中的文件。要列出ls目录而不是其内容,请传递该-d选项。

-t和标志-r是无用的,因为它们只影响排序,并且您一次列出一个文件。

find Program.8.koebe/ -mtime -10 -exec ls -gohd {} \;

通过 GNU find,您可以使用-printf而不是调用外部命令。输出格式相似但不完全相同。

find Program.8.koebe/ -mtime -10 -printf '%M %n %s %M %c %p\n'

相关内容