技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁(yè) > 教程 > 服務(wù)器類 >

linuxshell刪除重復(fù)文件只保留一份

來(lái)源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2018-08-31 00:25┆點(diǎn)擊:

  #name:remove_one.sh

  #用途:查找并刪除重復(fù)文件,每個(gè)文件只保留一個(gè)樣本

  #將文件依據(jù)大小排序并輸出

  ls -lS | awk 'BEGIN {

  #得到第一行total總數(shù)并丟棄,讀取下一行

  getline;getline;

  name1=$9;size=$5;

  }

  {

  name2=$9;

  if(size==$5)

  #大小一樣的可能是內(nèi)容相同的文件

  {

  #用md5進(jìn)行校驗(yàn)和

  ("md5sum "name1)|getline; csum1=$1;

  ("md5sum "name2)|getline; csum2=$1;

  #如果校驗(yàn)和相同則為內(nèi)容相同的文集,輸出名字

  if( csum1==csum2 )

  {

  {print name1;print name2}

  }

  };

  size=$5;name1=name2;

  }' | sort -u > duplicate_files

  #計(jì)算重復(fù)文件的md5sum,將重復(fù)文件中的一采樣寫入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

  --------------------------------------------------------

  執(zhí)行:

  [root@node1 tmp]# sh remove_one.sh

  過(guò)濾的是當(dāng)前目錄下的,不處理目錄,不遞歸處理子目錄