linux shell 重複資料刪除檔案只保留一份

來源:互聯網
上載者:User

#!/bin/bash 
#name:remove_one.sh
#用途:尋找並重複資料刪除檔案,每個檔案只保留一個樣本

#將檔案依據大小排序並輸出
ls -lS | awk 'BEGIN {
 #得到第一行total總數並丟棄,讀取下一行
 getline;getline;
 name1=$9;size=$5;
}
{
 name2=$9;
 if(size==$5)
 #大小一樣的可能是內容相同的檔案
 {
  #用md5進行校正和
  ("md5sum "name1)|getline; csum1=$1;
  ("md5sum "name2)|getline; csum2=$1;
  #如果校正和相同則為內容相同的文集,輸出名字
  if( csum1==csum2 )
  {
   {print name1;print name2}
  }
 };
 size=$5;name1=name2;
}' | sort -u > duplicate_files


#計算重複檔案的md5sum,將重複檔案中的一採樣寫入duplicate_sample中
cat duplicate_files|xargs -I {} md5sum {}| sort | uniq -w 32 | awk '{print $2}' | sort -u > duplicate_sample

echo Removing...

#刪除在duplicate_files中列出且未被duplicate_sample列出的全部檔案
comm duplicate_files duplicate_sample -2 -3|tee /dev/stderr|xargs rm
echo Removed duplicates files successfully


--------------------------------------------------------
執行:
[root@node1 tmp]# sh remove_one.sh
過濾的是目前的目錄下的,不處理目錄,不遞迴處理子目錄

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.