如何快速找出Linux中的重複文件

find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate

【1】find -not -empty -type f -printf 「%s\n」 :find是查找命令;-not -empty是要尋找非空文件;-type f是指尋找常規文件;-printf 「%s\n」表示的是文件的大小,單位爲bytes
【2】sort -rn:這條命令就是按文件大小進行反向排序
【3】uniq -d:uniq是把重複的只輸出一次,而-d指只輸出重複的部分(如9出現了5次,那麼就輸出1個9,而2只出現了1次,並不是重複出現的數字,故不輸出)
【4】xargs -I{} -n1 find -type f -size {}c -print0:這一部分分兩部分看,第一部分是xargs -I{} -n1,xargs命令將以前的結果轉化爲參數,供後面的find調用,其中-I{}是指把參數寫成{},而-n1是指將以前的結果一個一個輸入給下一個命令(-n8就是8個8個輸入給下一句,不寫-n就是把以前的結果一股腦的給下一句)。後半部分是find -type f -size {}c -print0,find指令咱們前面見過,-size{}是指找出大小爲{}bytes的文件,而-print0則是爲了防止文件名裏帶空格而寫的參數。spa

【5】
xargs -0 md5sum:xargs是將前面的結果轉化爲輸入,那麼這個-0表示讀取參數的時候以null爲分隔符讀取,這也不難理解,畢竟null的二進制表示就是00。後面的md5sum是指計算輸入的md5值。
【6】uniq -w32 –all-repeated=separate 最後這裏表示對MD5的前32個字節進行對比,以篩選出重複文件code

相關文章
相關標籤/搜索