为什么这两个 find-command 给出不同的结果?

1 ls find

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

find . -maxdepth 1 -mtime -10
Run Code Online (Sandbox Code Playgroud)

然后我发出了命令;

find . -maxdepth 1 -mtime -10 -exec ls -lh {} \;
Run Code Online (Sandbox Code Playgroud)

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

cuo*_*glm 5

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

$ find . -maxdepth 1 -mtime -10 | wc -l
63
$ find . -maxdepth 1 -mtime -10 -exec ls -lh {} \; | wc -l
313
Run Code Online (Sandbox Code Playgroud)

你应该使用:

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

find . -maxdepth 1 -type f -mtime -10 -exec ls -lh {} \;
Run Code Online (Sandbox Code Playgroud)

仅列出文件。