[英]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.