Macos 在目录中递归查找和计数文件的最快方法

Macos 在目录中递归查找和计数文件的最快方法,macos,terminal,xojo,Macos,Terminal,Xojo,我正在构建一个小程序来比较两个目录的文件内容。 这些目录应该相互镜像,但如果有人忘记将文件复制到第二个目录,则情况可能并非如此 因此,该程序将检查所有文件是否都从Dir1复制到Dir2 我遇到的问题是文件计数的速度。目前,我正在使用 find/Dir1/-type f\(-name'*.CR2'-o-name'*.NEF'\) 因为不知道这些文件是来自佳能还是尼康相机 在我们需要计算数千个文件的情况下,计算时间太长了 实现这一点的最快方法是什么?要找出Dir2中Dir1缺少的内容,请使用rsyn

我正在构建一个小程序来比较两个目录的文件内容。 这些目录应该相互镜像,但如果有人忘记将文件复制到第二个目录,则情况可能并非如此

因此,该程序将检查所有文件是否都从Dir1复制到Dir2

我遇到的问题是文件计数的速度。目前,我正在使用

find/Dir1/-type f\(-name'*.CR2'-o-name'*.NEF'\)

因为不知道这些文件是来自佳能还是尼康相机

在我们需要计算数千个文件的情况下,计算时间太长了


实现这一点的最快方法是什么?

要找出Dir2中Dir1缺少的内容,请使用
rsync

rsync -nir Dir1/ Dir2/
-n
是一个干运行,因此它实际上不会复制任何内容<代码>-i将为需要复制的每个文件打印一行。而
-r
使其递归

您可以通过使用
-z
检查空输出来测试是否有任何更改

if [[ -z $(rsync -nir  Dir1/ Dir2/) ]]; then 
  ...
fi
如果要检查另一个方向,可以添加
--delete

默认情况下,rsync使用文件大小和日期戳来确定两个文件是否相同。如果时间戳可能不同,可以使用
--size only
选项仅检查文件大小是否匹配,这非常快


如果需要将搜索限制为仅搜索某些文件扩展名或其他更复杂的查询,请参阅
manrsync
。这是一个非常可配置的工具。

非常有用的东西。谢谢你,罗布。我会调查的。
diff
can。