如何在Unix系統中查詢重複檔案?


引言

隨著我們越來越依賴數字媒體來儲存重要檔案,我們往往會隨著時間的推移積累大量檔案。管理這些檔案可能具有挑戰性,尤其是在我們擁有多個相同檔案的副本時,這些副本會佔用儲存空間。為了解決這個問題,Unix提供了幾種查詢和刪除重複檔案的方法,從而節省我們的時間和磁碟空間。

在本文中,我們將探討在Unix中查詢重複檔案的各種方法,並演示可用於每種方法的終端命令。透過這些不同的方法,我們可以根據需要管理的資料型別和數量,選擇最適合我們需求和偏好的方法。

使用fdupes查詢重複檔案

這是一個終端工具,允許我們遞迴地在目錄樹中查詢重複檔案。該工具在大多數類Unix系統上可用。

開啟終端視窗並導航到要掃描重複檔案的目錄:

$ cd Desktop/duplicate

然後,鍵入命令執行fdupes並查詢重複檔案:

fdupes -r . 

-r選項告訴fdupes反覆掃描當前目錄及其子目錄。“.”將當前目錄定義為搜尋的起點。執行命令後,fdupes將檢視目錄樹中的所有檔案,並返回相同檔案的列表。

./folder2/hello.txt                           
./folder1/hello.txt
./folder3/hello.txt

使用jdupes查詢重複檔案

這是一個命令列工具,用於識別和管理重複檔案。它根據名稱、大小、修改時間和內容等各種標準比較檔案,即使檔名稱不同或位於不同的目錄中,也能識別重複檔案。jdupes是fdupes工具的更高階版本。

要在終端中使用它,請鍵入以下命令:

$ jdupes -r .

這裡,-r選項指示jdupes掃描當前目錄及其子目錄。“.”在本例中由“.”大小定義為起點。執行命令後,它將掃描目錄中的所有檔案,只打印相同的檔案。

Scanning: 9 files, 4 items (in 1 specified)
** scanning files **
./folder1/hello.txt                                               
./folder2/hello.txt
./folder3/hello.txt

使用Awk工具查詢重複檔案

名為“awk”的實用程式是一個非常強大的工具,可以查詢相同的檔案。我們可以用它快速掃描目錄結構,查詢具有相似名稱的檔案,並顯示它們及其路徑。

$ awk -F'/' '{
   f = $NF
   arr[f] = f in arr? arr[f] RS $0 : $0
   bb[f]++ } 
   END{for(x in bb)
      if(bb[x]>1)
      printf "Name of duplicate files: %s 
% s
", x,arr[x] }'<(find . -type f)

此指令碼使用正斜槓作為分隔符掃描每個檔案路徑,使用$NF獲取檔名,並測試它是否存在於“arr”中。如果存在,則新增路徑,“bb”集合計算每個檔名出現的次數。

Name of duplicate files: unique.txt

./folder2/unique.txt
./folder1/unique.txt
./folder3/unique.txt

Name of duplicate files: hello.txt

./folder2/hello.txt

./folder1/hello.txt

./folder3/hello.txt

使用Awk按大小查詢重複檔案

我們還可以使用此awk實用程式查詢大小相同的檔案,因為重複檔案的大小相同。

$ awk '{
   fsize = $1
   fpath[fsize] = fsize in fpath ? fpath[fsize] RS $2 : $2
   count[fsize]++ 
} 
END{for(size in count)
   if(count[size]>1) 
      printf "Using the awk to find Duplicate files by size: %d  bytes
%s
",size,fpath[size] }' <(find . -type f -exec du -b {} +)

這將獲取每個檔案的大小並將其儲存在“fsize”變數中。如果此大小已出現在“fpath”陣列中,它會將當前檔案路徑附加到現有路徑集合中。count陣列記錄每個檔案大小出現的次數。最後的命令迴圈遍歷count陣列並列印相同檔案的名稱。

Using the awk to find Duplicate files by size: 13 bytes

./folder2/unique.txt
./folder3/unique.txt
 ** many more duplicate files**

 Using the awk to find Duplicate files by size: 20 bytes

./folder2/hello.txt
./folder1/hello.txt
./folder3/hello.txt

結論

從本文中,我們瞭解到Unix作業系統提供了多種有效的方法來查詢和刪除重複檔案,例如使用fdupes、jdupes、awk和find命令等命令列工具。透過使用這些方法,我們可以有效地管理我們的檔案並節省寶貴的磁碟空間。

更新於:2023年5月8日

1K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.