これら 2 つの find コマンドが異なる結果を返すのはなぜでしょうか?

これら 2 つの find コマンドが異なる結果を返すのはなぜでしょうか?

過去 10 日間に変更されたすべてのファイルとその所有者を確認したかったので、返される結果の数を把握するために次のように入力しました。

find . -maxdepth 1 -mtime -10

そこで私は命令を出した。

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

どちらのコマンドもまったく異なる結果を生成しますが、その理由がわかりません。何が起こっているのか、なぜ異なる結果が生成されるのかを誰か説明してもらえますか?

答え1

オプションを使用していないため-type ffindすべてのフォルダーとファイルが返されます。2 番目のコマンドでは、フォルダーが見つかった場合、コマンドは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 {} \;

ファイルのみを一覧表示します。

関連情報