網頁

2021年1月24日 星期日

依檔案清單大量找檔案並拷貝

有一個檔案清單紀錄要找尋在 dir 目錄下的檔案,並將找到的檔案拷貝到桌面 tmp目錄下,
找尋的目錄dir,目錄下有多層目錄共38006個檔案(沒有順序)。

方法1:使用 shell script 管線導向來實現
程式碼:https://ideone.com/e.js/E0W01z
所需時間:1.085s

方法2:遞迴目錄下的每一檔案並製成HASH索引,讀取檔案清單,依清單比對HASH
程式碼:https://ideone.com/HDhrp6
所需時間:1.298s


方法3:讀取檔案清單1,然後遞迴目錄下的檔案比對,檔案清單2,遞迴目錄下的檔案比對...
程式碼:https://ideone.com/1a2BWb
所需時間:6.588s


方法4:讀取檔案清單製成HASH索引,然後遞迴目錄下的每一檔案比對HASH。
程式碼:https://ideone.com/hbZekq
所需時間:1.261s

   

由上可知效率上來說:方法1 > 方法4 > 方法2 > 方法3

利用 bash command 和管線(pipe line) 可以快速達到這個結果,如果只是想查看搜尋結果可以這樣:
find 目錄 | grep -F -f 欲搜尋的檔案list


沒有留言:

張貼留言