軟體包清理的shell指令碼

來源:互聯網
上載者:User

標籤:shell指令碼   軟體包清理   


      企業軟體包管理過程中,源中一個服務的安裝包有很多版本,導致打包建立索引時非常非常慢,這個shell指令碼就是用來解決這個問題。(企業實習時寫的第一個指令碼)

#!/bin/bashrm -fr  ~/update 2> /dev/nullmkdir ~/updateread -p "Please input your absolute PATH:(your path should end with "/"): " pathls $path > ~/qtcat ~/qt | grep .rpm$ |awk ‘{print $NF}‘ > ~/testcat ~/test | awk ‘BEGIN{FS="-"}{$1=$1;print $0}‘ > ~/test1lines=`cat ~/test | wc -l`############################################################處理第一個軟體包cat ~/test1 | sed -n ‘1p‘ | awk ‘BEGIN{RS=" "}{print $0}‘ | sed ‘/^$/d‘ > ~/f1firsta=`cat ~/f1 | sed ‘=‘ | sed ‘N;s/\n/ /‘ | awk ‘$2~/^[0-9].[0-9]?[0-9]?.?[0-9]?[0-9]?$/{print $2}‘`firstb=`cat ~/test |sed -n ‘s/-/  /gp‘ | sed -n  ‘1p‘ | awk -v i=$firsta ‘BEGIN{FS=i}{print $1}‘ | sed ‘s/ //g‘`cat ~/test | sed -n ‘1p‘ > ~/update/$firstb#######################################################for ((i=1;i<$lines;i++))doaline=$i((bline=i+1))#########################################################本行和下一行軟體包的各個欄位匯入到檔案中cat ~/test1 | sed -n ‘‘$aline‘p‘ | awk ‘BEGIN{RS=" "}{print $0}‘ | sed ‘/^$/d‘ > ~/test2cat ~/test1 | sed -n ‘‘$bline‘p‘ | awk ‘BEGIN{RS=" "}{print $0}‘ | sed ‘/^$/d‘ > ~/test3##########################################################過濾出版本號碼儲存在變數中var1a=`cat ~/test2 | sed ‘=‘ | sed ‘N;s/\n/ /‘ | awk ‘$2~/^[0-9].[0-9]?[0-9]?.?[0-9]?[0-9]?$/{print $2}‘`var1b=`cat ~/test3 | sed ‘=‘ | sed ‘N;s/\n/ /‘ | awk ‘$2~/^[0-9].[0-9]?[0-9]?.?[0-9]?[0-9]?$/{print $2}‘`##########################################################根據版本號碼將軟體包前後分為2部分,並將前半部分中間的空格或者-去掉,並儲存到變數>中var2a=`cat ~/test |sed -n ‘s/-/  /gp‘ | sed -n ‘‘$aline‘p‘ | awk -v i=$var1a ‘BEGIN{FS=i}{print $1}‘ | sed ‘s/ //g‘`var2b=`cat ~/test |sed -n ‘s/-/  /gp‘ | sed -n ‘‘$bline‘p‘ | awk -v i=$var1b ‘BEGIN{FS=i}{print $1}‘ | sed ‘s/ //g‘`############################################################根據軟體版本號碼前面的欄位將軟體分類到指定的檔案目錄中cat ~/test | sed -n ‘‘$bline‘p‘ >>  ~/update/$var2bdone##########################################################fial=(`ls ~/update`) #設定數組存放軟體存放檔案fico=${#fial[*]}   #數組長度for ((j=0;j<$fico;j++)) #遍曆數組do        lines=`cat ~/update/${fial[$j]}| wc -l`        if [ $lines -le 3 ] #檔案行數小於3,將檔案內容加到save檔案中                then                cat ~/update/${fial[$j]} >> save        else            #檔案行數大於3的情況                cat ~/update/${fial[$j]} | sed ‘i\\‘$path‘‘ | sed -n ‘N;s/\n//gp‘ > ~/f2                ls -t `cat ~/f2` | head -n 3 | awk ‘BEGIN{FS="/"}{print $NF}‘>> ~/save                ls -t `cat ~/f2` | tail -n +4 | awk ‘BEGIN{FS="/"}{print $NF}‘>> ~/disp        fidonerm -f ~/test1 ~/test2 ~/test3 ~/f1 ~/f2  ~/qt ~/testrm -fr ~/update

要刪除的軟體包在disp中儲存,要保留的軟體包在save中儲存,其中只保留了最新的3個軟體包

實際刪除前要先備份,再刪除,最終執行rm -f `cat disp`即可。

本文出自 “尼族部落” 部落格,轉載請與作者聯絡!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.