為什麼這兩個 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 {} \;

僅列出文件。

相關內容