<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    利用 Linux 查找重復文件

    VSole2021-10-23 22:58:15

    方法一:

    使用Find命令

    本部分算是對find強大功能的擴展使用方法說明。在find的基礎上,我們可與(如xargs命令)等其它基本Linux命令相結合,即能創造出無限的命令行功能,比如:可以快速查找出Linux某個文件夾及其子文件夾中的重復文件列表。要實現這個功能在流程上是比較簡單的,只要查找遍歷出所有文件,再通過命令去比較每個文件的MD5就OK啦。

    聽起來好像比較抽象,其實命令就一條:

    find -not -empty -type f -printf "%s" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate
    
    • find -not -empty -type f -printf “%sn” 表示使用find命令搜索出所有非空文件,再打印出他們的大小
    • sort -rn 命令不用多說了把,這條命令就是按文件大小進行反向排序
    • uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 表示只打印了重復的行,這里使用代表打印出文件名相同的文件
    • uniq -w32 –all-repeated=separate 最后這里表示對MD5的前32個字節進行對比,以篩選出重復文件 使用命令行的整個過程就是這么簡單和容易。

    方法二:使用dupeGuru工具

    DupeGuru是一個跨平臺應用,有Linux、Windows和Mac OS X版本,它可以通過文件大小、MD5和文件名等多種標準來幫助用戶找出Linux中的重復文件。Ubuntu用戶可以直接通過添加如下PPA源來方式來進行安裝:

    sudo add-apt-repository ppa:hsoft/ppa
    sudo apt-get update
    sudo apt-get install dupeguru*
    

    方法三:使用Find命令解析

    在工作生活當中,我們很可能會遇到查找重復文件的問題。比如從某游戲提取的游戲文本有重復的,我們希望找出所有重復的文本,讓翻譯只翻譯其中一份,而其他的直接替換。那么這個問題該怎么做呢?當然方法多種多樣,而且無論那種方法應該都不會太難,但筆者第一次遇到這個問題的時候第一反應是是用Linux的Shell腳本,所以文本介紹這種方式。

    先上代碼:

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

    大家先cd到自己想要查找重復文件的文件夾,然后copy上面代碼就可以了,系統會對當前文件夾及子文件夾內的所有文件進行查重。

    下面分析一下上面的命令。

    首先看第一句:

    find -not -empty -type f -printf "%sn"
    

    find是查找命令;-not -empty是要尋找非空文件;-type f是指尋找常規文件;-printf “%sn”比較具有迷惑性,這里的%s并非C語言中的輸出字符串,它實際表示的是文件的大小,單位為bytes(不懂就man,man一下find,就可以看到了),n是換行符。所以這句話的意思是輸出所有非空文件的大小。

    通過管道,上面的結果被傳到第二句:

    sort -rn
    

    sort是排序,-n是指按大小排序,-r是指從大到小排序(逆序reverse)。

    第三句:

    uniq -d
    

    uniq是把重復的只輸出一次,而-d指只輸出重復的部分(如9出現了5次,那么就輸出1個9,而2只出現了1次,并非重復出現的數字,故不輸出)。

    第四句:

    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則是為了防止文件名里帶空格而寫的參數。

    第五句:

    xargs -0 md5sum
    

    xargs我們之前說過,是將前面的結果轉化為輸入,那么這個-0又是什么意思?man一下xargs,我們看到-0表示讀取參數的時候以null為分隔符讀取,這也不難理解,畢竟null的二進制表示就是00。后面的md5sum是指計算輸入的md5值。

    第六句:sort是排序,這個我們前面也見過。

    第七句:

    uniq -w32 --all-repeated=separate
    

    uniq -w32是指尋找前32個字符相同的行,原因在于md5值一定是32位的,而后面的--all-repeated=separate是指將重復的部分放在一類,分類輸出。

    第八句:

    cut -b 36-
    

    由于我們的結果帶著md5值,不是很好看,所以我們截取md5值后面的部分,cut是文本處理函數,這里-b 36-是指只要每行36個字符之后的部分。

    我們將上述每個命令用管道鏈接起來,存入result.txt:

    find -not -empty -type f -printf "%sn" | sort -rn |uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate | cut -b 36- >result.txt
    

    雖然結果很好看,但是有一個問題,這是在Linux下很好看,實際上如果有朋友把輸出文件放到Windows上,就會發現換行全沒了,這是由于Linux下的換行是n,而windows要求nr,為了解決這個問題,我們最后執行一條指令,將n轉換為nr:

    cat result.txt | cut -c 36- | tr -s 'n'
    
    linux查找文件xargs
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    本文章盤點了 Linux 運維必備 150 個命令,請配合下面的網站使用。定位你需要使用的命令,然后去這個網站查詢詳細用法即可。 地址:wangchujiang.com/linux-command/
    作為一個Java開發人員,有些常用的Linux命令必須掌握。本文并不會對所有命令進行詳細講解,只給出常見用法和解釋。
    最全Linux命令總結
    因此做為運維人員,就必須了解一些安全運維準則,同時,要保護自己所負責的業務,首先要站在攻擊者的角度思考問題,修補任何潛在的威脅和漏洞。 本文主要分為如下部分展開:
    今天,給小伙伴們帶來一篇 Linux 命令總結的非常全的文章,也是我們平時工作中使用率非常高的操作命令,命令有點多,建議小伙伴們可以先收藏后閱讀。
    在本文中,我將向您演示一些專業的Linux命令技巧,這些技巧將使您節省大量時間,在某些情況下還可以避免很多麻煩,而且它也將幫助您提高工作效率。并不是說這些只是針對初學者的Linux技巧。很酷的Linux終端技巧,幫助您節省時間和提高生產力您很可能已經知道這些Linux命令中的一些或全部。當您開始在Linux終端中鍵入內容時,您可以按Tab鍵,它會建議所有可能的選項,這些選項以您到目前為止所鍵入的字符串開頭。
    這里有一些很有用的 Linux 命令,終端技巧和快捷方式,可以在使用Linux命令行時節省大量時間。在本文中,我將向您演示一些專業的Linux命令技巧,這些技巧將使您節省大量時間,在某些情況下還可以避免很多麻煩,而且它也將幫助您提高工作效率。
    注意在整個過程中,客戶不要事先征集到現場或現場的人員操作情況。啟動或部署監測設備,針對病毒感染進行全面監測,避免死灰復燃。在此過程中并沒有展開分析,隨后制作收集所有相關的樣本日志等,并尋找感染源頭,并制定整改。先找出急用的木馬文件,不要于打包一份。
    應急響應的基本流程
    2022-01-01 08:34:07
    注意在整個過程中不要被客戶或現場的運維人員誤導。操作前需先征得客戶許可。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类