如何在不使用 glob/listdir/etc.. 比较文件名的情况下检查文件夹中是否存在重复文件?
How do I check if there is a duplicate file in a folder, without comparing file names using glob/listdir/etc..?
我有一个包含几张图片的文件夹,目录结构如下所示:
./images/
./images/1.png
./images/2.png
./images/3.png
./images/4.png
./images/{n}.png
这些图像已通过名为 update.js
的脚本使用 request and fs 模块下载并保存。
每个文件都以文件夹中项目的长度命名(I.E: 长度 + 1)。
update.js
脚本下载(并保存)每个图像,无论它是否存在。
我可以通过删除 images
文件夹来解决这个问题,但这是一种资源浪费。
防止这种行为的最有效方法是什么?
注意:我不能使用简单的文件名检查,因为名称是索引。
谢谢。
您可以为每个文件发出 HTTP head 请求并获取其 headers。然后你可以看到目标文件有多大,如果大小完全匹配就避免re-downloading它。
这并不理想,因为不同的文件可能具有相同的大小。
一些服务器给你一个可能是最好的内容 md5。除非您的用例非常大,否则 md5 不太可能在您拥有的任何两个文件之间匹配。
虽然修复脚本会更好,但它会存储正确的元数据,所有这些都非常 hacky :)。您可以将真实文件名和修改后的时间戳存储为同级目录中的另一个文件,并且相当确定它不会影响任何东西。然后你可以在下载之前检查那些。
我有一个包含几张图片的文件夹,目录结构如下所示:
./images/
./images/1.png
./images/2.png
./images/3.png
./images/4.png
./images/{n}.png
这些图像已通过名为 update.js
的脚本使用 request and fs 模块下载并保存。
每个文件都以文件夹中项目的长度命名(I.E: 长度 + 1)。
update.js
脚本下载(并保存)每个图像,无论它是否存在。
我可以通过删除 images
文件夹来解决这个问题,但这是一种资源浪费。
防止这种行为的最有效方法是什么?
注意:我不能使用简单的文件名检查,因为名称是索引。
谢谢。
您可以为每个文件发出 HTTP head 请求并获取其 headers。然后你可以看到目标文件有多大,如果大小完全匹配就避免re-downloading它。
这并不理想,因为不同的文件可能具有相同的大小。
一些服务器给你一个可能是最好的内容 md5。除非您的用例非常大,否则 md5 不太可能在您拥有的任何两个文件之间匹配。
虽然修复脚本会更好,但它会存储正确的元数据,所有这些都非常 hacky :)。您可以将真实文件名和修改后的时间戳存储为同级目录中的另一个文件,并且相当确定它不会影响任何东西。然后你可以在下载之前检查那些。