为什么这两个 find 命令给出不同的结果?

为什么这两个 find 命令给出不同的结果?

我想查看过去 10 天内修改的所有文件以及这些文件的所有者,因此我输入了以下内容以了解将返回多少结果;

find . -maxdepth 1 -mtime -10

然后我发出了命令;

find . -maxdepth 1 -mtime -10 -exec ls -lh {} \;

这两个命令给出了非常不同的结果,但我不明白为什么。有人可以解释发生了什么以及为什么会产生不同的结果吗?

答案1

因为您不使用 option -type ffind所以将返回所有文件夹和文件。在第二个命令中,如果找到文件夹,命令ls -lh将列出其内容,从而导致比第一个命令更多的结果。

$ find . -maxdepth 1 -mtime -10 | wc -l
63
$ find . -maxdepth 1 -mtime -10 -exec ls -lh {} \; | wc -l
313

你应该使用:

find . -maxdepth 1 -type f -mtime -10

find . -maxdepth 1 -type f -mtime -10 -exec ls -lh {} \;

仅列出文件。

相关内容