簡體   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