繁体   English   中英

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

[英]FASTEST way to find and count files recursively in a directory

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

所以这个程序将检查是否所有的文件都从 Dir1 复制到了 Dir2。

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

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

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

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

最快的方法是什么?

要找出 Dir2 中的 Dir1 缺少什么,请使用rsync

rsync -nir Dir1/ Dir2/

-n是一个试运行,所以它实际上不会复制任何东西。 -i将为每个需要复制的文件打印一行。 -r使其递归。

您可以使用-z来检查是否有任何更改,以检查是否为空 output。

if [[ -z $(rsync -nir  Dir1/ Dir2/) ]]; then 
  ...
fi

如果要检查另一个方向,可以添加--delete

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM