find . -type f -exec command {} +中,+与\;的区别

Posted on 2024-08-06 15:03  Bruce-Y  阅读(97)  评论(0)    收藏  举报

原理

逐个执行(-exec ... \;

  • 原理:每找到一个匹配的文件,find 就会启动一次指定的命令,并将该文件作为参数传递给命令。每次执行命令都是一个独立的进程。
  • 示例:如果有 100 个文件匹配,find 将启动 100 次命令,每次处理一个文件。
  find . -type f -exec command {} \;

批量执行(-exec ... +

  • 原理:find 会收集所有匹配的文件,并将它们作为一组参数一次性传递给指定的命令。这通常只需要启动一次命令进程。
  • 示例:如果有 100 个文件匹配,find 将启动一次命令,并将这 100 个文件作为参数传递给命令。
  find . -type f -exec command {} +

性能成本(Cost)

逐个执行(-exec ... \;

  • 进程启动开销:每次找到一个文件都会启动一个新的进程,这会带来额外的系统开销。启动和关闭进程需要系统分配和释放资源。
  • I/O 开销:频繁地启动和关闭进程可能会导致更多的 I/O 操作,特别是在处理大量小文件时。

批量执行(-exec ... +

  • 进程启动开销:只需启动一次进程,因此大大减少了系统分配和释放资源的次数。
  • I/O 开销:减少了频繁的 I/O 操作,因为所有匹配的文件一次性传递给命令处理。

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3