[Script] 批次解壓縮不同種類檔案

這學期擔任計算機程式助教,負責出作業與批改作業。儘管作業已經要求同學把 Code 打包成 Zip 格式繳交,但還是有不少同學會上傳錯誤格式,造成批改時的困擾…

於是乎要寫個程式來做區別,順便對繳交錯誤格式的同學扣分


  • 可對 rar, zip ,7z 解壓,要安裝一下相關程式
  • 輸入資料夾:zip
  • 輸出資料夾:output
  • 從 Ceiba下載下來的壓縮檔名稱長這樣:hw143528_b019011XX_8779f7c4d2028af_1.zip
  • 輸出資料夾下的目錄會依學號命名:b019011XX
  • 可區別檔案交錯,例如沒有壓縮或是交成文字檔
#!/bin/bash

count=0
input_dir=zip
output_dir=output

# create dir file
mkdir $output_dir

#remove old files
rm -R $output_dir/*

#decompressing
for file in $input_dir/*
do
#get filename
filetype[$count]=${file#*.}
t=${file#*_}
id[$count]=${t%_*_*}

#decompress under different type
case ${file#*.} in
"zip")
echo -e "unzip ${t%_*_*}"
unzip -j $file -d $output_dir/${t%_*_*} 1>> /dev/null
;;
"rar")
echo -e "unrar ${t%_*_*}"
rar e $file $output_dir/${t%_*_*}/ 1>> /dev/null
;;
"7z")
echo -e "un7z ${t%_*_*}"
7z e zip/$file -o $output_dir/${t%_*_*}/ 1>> /dev/null
;;
"cpp")
echo "wrong_cpp ${t%_*_*}"
;;
"c")
echo "wrong_c ${t%_*_*}"
;;
"txt")
echo "wrong_txt ${t%_*_*}"
;;
*)
echo "unknown ${t%_*_*}"
continue
;;
esac
count=$[$count+1]
done

count=$[$count+1]

# display result
echo total number = $count

exit 0
Jerry
Jerry

樂於分享的軟體工程師,曾在新創與大型科技公司實習,獲得黑客松競賽冠軍,擔任資安研討會講者。長期熱衷於資訊安全、雲端服務、網路行銷等領域,希望將科技知識分享給更多人。內容轉載請來信:jlee58tw@gmail.com

發表回應