在系統中查詢重複檔案

2021-09-12 11:02:16 字數 1500 閱讀 4398

給定乙個目錄資訊列表,包括目錄路徑,以及該目錄中的所有包含內容的檔案,您需要找到檔案系統中的所有重複檔案組的路徑。一組重複的檔案至少包括二個具有完全相同內容的檔案。

輸入列表中的單個目錄資訊字串的格式如下:

「root/d1/d2/…/dm f1.txt(f1_content) f2.txt(f2_content) … fn.txt(fn_content)」

這意味著有 n 個檔案(f1.txt, f2.txt … fn.txt 的內容分別是 f1_content, f2_content … fn_content)在目錄 root/d1/d2/…/dm 下。注意:n>=1 且 m>=0。如果 m=0,則表示該目錄是根目錄。

該輸出是重複檔案路徑組的列表。對於每個組,它包含具有相同內容的檔案的所有檔案路徑。檔案路徑是具有下列格式的字串:

「directory_path/file_name.txt」

示例 1:

輸入:[「root/a 1.txt(abcd) 2.txt(efgh)」, 「root/c 3.txt(abcd)」, 「root/c/d 4.txt(efgh)」, 「root 4.txt(efgh)」]

輸出:[[「root/a/2.txt」,「root/c/d/4.txt」,「root/4.txt」],[「root/a/1.txt」,「root/c/3.txt」]]

注:最終輸出不需要順序。

您可以假設目錄名、檔名和檔案內容只有字母和數字,並且檔案內容的長度在 [1,50] 的範圍內。

給定的檔案數量在 [1,20000] 個範圍內。

您可以假設在同一目錄中沒有任何檔案或目錄共享相同的名稱。

您可以假設每個給定的目錄資訊代表乙個唯一的目錄。目錄路徑和檔案資訊用乙個空格分隔。

class solution 

//建立map存放檔名和對應的目錄

map> map = new hashmap<>();

//遍歷集合,取出檔名和目錄

string strs = null;

listlist = null;

string content = "";

for(int i=0;i();

list.add(strs[0]+"/"+strs[j].substring(0,strs[j].length()-content.length()-2));

map.put(content,list);

}else }}

//取出結果放在結果集中

list> result = new arraylist<>();

setkeys = map.keyset();

for (string key : keys )

}return result;

}public static string getcontent(string filename)

return filename.substring(index+1,filename.length()-1);

}}

leetcode 609 在系統中查詢重複檔案

目錄給定乙個目錄資訊列表,包括目錄路徑,以及該目錄中的所有包含內容的檔案,您需要找到檔案系統中的所有重複檔案組的路徑。一組重複的檔案至少包括二個具有完全相同內容的檔案。輸入列表中的單個目錄資訊字串的格式如下 root d1 d2 dm f1.txt f1 content f2.txt f2 cont...

Linux系統中查詢 刪除重複檔案,釋放磁碟空間。

在linux系作業系統中查詢並刪除重複檔案的方法的確有很多,不過這裡介紹的是一款非常簡單實用的軟體fslint。fslint是乙個重複檔案查詢工具,可以使用它來清除不必要的重複檔案,筆者經常使用它來釋放linux系統中的磁碟空間。fslint同時具有gui和cli模式。因此,對於新手來說,這是乙個使...

在MSSQL中查詢出重覆記錄

假如你表中只有乙個關鍵字段。可以用 select distinct t1.fid,t2.fcode,t2.fname from bbmaterialcode t1,bbmaterialcode t2 where t1.fcode t2.fcode and t1.fname t2.fname and ...